var __defProp = Object.defineProperty;
var __defNormalProp = (obj2, key, value) => key in obj2 ? __defProp(obj2, key, { enumerable: true, configurable: true, writable: true, value }) : obj2[key] = value;
var __publicField = (obj2, key, value) => {
  __defNormalProp(obj2, typeof key !== "symbol" ? key + "" : key, value);
  return value;
};
import { defineComponent, createApp, computed, openBlock, createElementBlock, normalizeClass, normalizeStyle, renderSlot, toDisplayString, createCommentVNode, h, useSlots, createBlock, unref, withCtx, Fragment, createVNode, createElementVNode, getCurrentInstance, ref, watch, onMounted, onBeforeUnmount, Teleport, Transition, withDirectives, mergeProps, vShow, nextTick, vModelText, vModelDynamic, renderList, createStaticVNode, pushScopeId, popScopeId, inject, provide, withModifiers, withKeys, createSlots, createTextVNode, reactive, cloneVNode } from "vue";
const number = {
  /**
   * 数字格式化
   * @param {Number} num
   */
  formatNumber(num) {
    if (this.isNumber(num)) {
      return num.toString().replace(/(\d)(?=(?:\d{3})+$)/g, "$1,");
    } else {
      return num;
    }
  },
  /**
   * 判断是否数字
   * @param {Object} num
   */
  isNumber(num) {
    if (typeof num == "number" && !isNaN(num)) {
      return true;
    }
    return false;
  },
  /**
   * 多个数的加法运算
   */
  add(...values) {
    return values.reduce((num, value) => {
      let r1 = 0;
      let r2 = 0;
      let m = 0;
      try {
        r1 = num.toString().split(".")[1].length;
      } catch (e) {
      }
      try {
        r2 = value.toString().split(".")[1].length;
      } catch (e) {
      }
      m = Math.pow(10, Math.max(r1, r2));
      return (num * m + value * m) / m;
    });
  },
  /**
   * 多个数的减法运算
   */
  subtract(...values) {
    return values.reduce((num, value) => {
      let r1 = 0;
      let r2 = 0;
      let m = 0;
      try {
        r1 = num.toString().split(".")[1].length;
      } catch (e) {
      }
      try {
        r2 = value.toString().split(".")[1].length;
      } catch (e) {
      }
      m = Math.pow(10, Math.max(r1, r2));
      return (num * m - value * m) / m;
    });
  },
  /**
   * 多个数的乘法运算
   */
  mutiply(...values) {
    return values.reduce((num, value) => {
      let m = 0;
      let s1 = num.toString();
      let s2 = value.toString();
      try {
        m += s1.split(".")[1].length;
      } catch (e) {
      }
      try {
        m += s2.split(".")[1].length;
      } catch (e) {
      }
      return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
    });
  },
  /**
   * 多个数的除法运算
   */
  divide(...values) {
    return values.reduce((num, value) => {
      let t1 = 0;
      let t2 = 0;
      let s1 = num.toString();
      let s2 = value.toString();
      try {
        t1 = s1.split(".")[1].length;
      } catch (e) {
      }
      try {
        t2 = s2.split(".")[1].length;
      } catch (e) {
      }
      return Number(s1.replace(".", "")) / Number(s2.replace(".", "")) * Math.pow(10, t2 - t1);
    });
  }
};
const string = {
  /**
   * 向指定位置插入字符串
   * @param {Object} original 原始字符串
   * @param {Object} str 插入的字符串
   * @param {Object} index 插入的位置
   */
  insert(original, str, index) {
    if (!original || typeof original != "string") {
      throw new TypeError("The first argument must be a string");
    }
    if (typeof str != "string") {
      throw new TypeError("The second argument must be a string");
    }
    if (!number.isNumber(index)) {
      throw new TypeError("The third argument must be a number");
    }
    if (index < 0) {
      throw new Error("The third argument cannot be less than 0");
    }
    return original.substring(0, index) + str + original.substring(index, original.length);
  },
  /**
   * 删除指定位置的字符串
   * @param {Object} original 原始字符串
   * @param {Object} index 删除的位置序列
   * @param {Object} num 删除的字符串长度
   */
  delete(original, index, num) {
    if (!original || typeof original != "string") {
      throw new TypeError("The first argument must be a string");
    }
    if (!number.isNumber(index)) {
      throw new TypeError("The second argument must be a number");
    }
    if (index < 0) {
      throw new Error("The second argument cannot be less than 0");
    }
    if (!number.isNumber(num)) {
      throw new TypeError("The third argument must be a number");
    }
    if (num < 0) {
      throw new Error("The third argument cannot be less than 0");
    }
    return original.substring(0, index) + original.substring(index + num, original.length);
  },
  /**
   * 替换指定位置的字符串
   * @param {Object} original 原始字符串
   * @param {Object} start 开始位置
   * @param {Object} end 结束位置
   * @param {Object} str 替换的字符串
   */
  replace(original, start, end, str) {
    if (!original || typeof original != "string") {
      throw new TypeError("The first argument must be a string");
    }
    if (!number.isNumber(start)) {
      throw new TypeError("The second argument must be a number");
    }
    if (start < 0) {
      throw new Error("The second argument cannot be less than 0");
    }
    if (!number.isNumber(end)) {
      throw new TypeError("The third argument must be a number");
    }
    if (end < 0) {
      throw new Error("The third argument cannot be less than 0");
    }
    if (typeof str != "string") {
      throw new TypeError("The fourth argument must be a string");
    }
    return original.substring(0, start) + str + original.substring(end, original.length);
  },
  /**
   * 去除字符串空格
   * @param {Object} str 原始字符串
   * @param {Object} global 为true时去除所有空格，否则只去除两边空格
   */
  trim(str, global2) {
    if (typeof str != "string") {
      throw new TypeError("The first argument must be a string");
    }
    let result = str.replace(/(^\s+)|(\s+$)/g, "");
    if (global2) {
      result = result.replace(/\s/g, "");
    }
    return result;
  }
};
const element = {
  /**
   * 判断是否是Window对象
   * @param {Object} data 入参
   */
  isWindow(data2) {
    return data2 && data2 instanceof Window;
  },
  /**
   * 获取元素距离某个定位祖先元素左侧/顶部/底部/右侧的距离
   * @param {Object} el 元素
   * @param {Object} root 定位父元素或者祖先元素，未指定则为document.body
   */
  getElementPoint(el, root) {
    if (!this.isElement(el)) {
      throw new TypeError("The first argument must be an element");
    }
    if (!this.isElement(root)) {
      root = document.body;
    }
    if (!this.isContains(root, el)) {
      throw new Error("The second argument and the first argument have no hierarchical relationship");
    }
    let obj2 = el;
    let offsetTop = 0;
    let offsetLeft = 0;
    while (this.isElement(el) && this.isContains(root, el) && root !== el) {
      offsetTop += el.offsetTop;
      offsetLeft += el.offsetLeft;
      el = el.offsetParent;
    }
    let offsetRight = root.offsetWidth - offsetLeft - obj2.offsetWidth;
    let offsetBottom = root.offsetHeight - offsetTop - obj2.offsetHeight;
    return {
      top: offsetTop,
      left: offsetLeft,
      right: offsetRight,
      bottom: offsetBottom
    };
  },
  /**
   * 判断某个元素是否包含指定元素，包含相等关系和父子关系
   * @param {Object} parentNode 父元素或祖先元素
   * @param {Object} childNode 子元素
   */
  isContains(parentNode, childNode) {
    if (!this.isElement(parentNode)) {
      throw new TypeError("The first argument must be an element");
    }
    if (!this.isElement(childNode)) {
      throw new TypeError("The second argument must be an element");
    }
    if (parentNode === childNode) {
      return true;
    }
    if (parentNode.contains) {
      return parentNode.contains(childNode);
    }
    if (parentNode.compareDocumentPosition) {
      return !!(parentNode.compareDocumentPosition(childNode) & 16);
    }
    return false;
  },
  /**
   * 判断某个元素是否是指定元素的父元素
   * @param {Object} parentNode 父元素
   * @param {Object} childNode 子元素
   */
  isParentNode(parentNode, childNode) {
    if (!this.isElement(parentNode)) {
      throw new TypeError("The first argument must be an element");
    }
    if (!this.isElement(childNode)) {
      throw new TypeError("The second argument must be an element");
    }
    if (parentNode === childNode) {
      return false;
    }
    return childNode.parentNode === parentNode;
  },
  /**
   * 查找某个元素下指定选择器的子元素
   * @param {Object} el 元素
   * @param {Object} selector 支持多选择器，等同于querySelectorAll的参数
   */
  children(el, selector) {
    if (!this.isElement(el)) {
      throw new TypeError("The first argument must be an element");
    }
    if (selector && typeof selector != "string") {
      throw new TypeError("The second argument must be a string");
    }
    const res = el.querySelectorAll(selector || "*");
    return [...res].filter((ele) => {
      return ele.parentNode === el;
    });
  },
  /**
   * 查找某个元素下指定选择器的兄弟元素
   * @param {Object} el 元素
   * @param {Object} selector 取值等同于queryselectorAll的参数，支持多选择器
   */
  siblings(el, selector) {
    if (!this.isElement(el)) {
      throw new TypeError("The first argument must be an element");
    }
    if (selector && typeof selector != "string") {
      throw new TypeError("The second argument must be a string");
    }
    if (!el.parentNode) {
      return [];
    }
    const res = el.parentNode.querySelectorAll(selector || "*");
    return [...res].filter((ele) => {
      return ele.parentNode === el.parentNode && ele != el;
    });
  },
  /**
   * rem与px单位转换
   * @param {Object} num rem数值
   */
  rem2px(num) {
    if (!number.isNumber(num)) {
      throw new TypeError("The argument must be a number");
    }
    let fs = this.getCssStyle(document.documentElement, "font-size");
    return number.mutiply(num, parseFloat(fs));
  },
  /**
   * rem与px单位转换
   * @param {Object} num px数值
   */
  px2rem(num) {
    if (!number.isNumber(num)) {
      throw new TypeError("The argument must be a number");
    }
    let fs = this.getCssStyle(document.documentElement, "font-size");
    return number.divide(num, parseFloat(fs));
  },
  /**
   * 获取元素的内容宽度，内容宽度不包括border和padding
   * @param {Object} el 支持css选择器字符串，未指定则表示document.body
   */
  width(el) {
    if (typeof el == "string" && el) {
      el = document.body.querySelector(el);
    }
    if (!this.isElement(el)) {
      el = document.body;
    }
    let clientWidth = el.clientWidth;
    let paddingLeft_width = parseFloat(this.getCssStyle(el, "padding-left"));
    let paddingRight_width = parseFloat(this.getCssStyle(el, "padding-right"));
    return number.subtract(clientWidth, paddingLeft_width, paddingRight_width);
  },
  /**
   * 获取元素的内容高度，内容高度不包括border和padding
   * @param {Object} el 支持css选择器字符串 未指定则表示document.body
   */
  height(el) {
    if (typeof el == "string" && el) {
      el = document.body.querySelector(el);
    }
    if (!this.isElement(el)) {
      el = document.body;
    }
    let clientHeight = el.clientHeight;
    let paddingTop_height = parseFloat(this.getCssStyle(el, "padding-top"));
    let paddingBottom_height = parseFloat(this.getCssStyle(el, "padding-bottom"));
    return number.subtract(clientHeight, paddingTop_height, paddingBottom_height);
  },
  /**
   * 移除class
   * @param {Object} el 元素
   * @param {Object} className 支持多类,以空格划分
   */
  removeClass(el, className) {
    if (!this.isElement(el)) {
      throw new TypeError("The first argument must be an element");
    }
    if (!className || typeof className != "string") {
      throw new TypeError("The second argument must be a string");
    }
    let classList = el.classList;
    let classArray = string.trim(className).split(/\s+/);
    classArray.forEach((item) => {
      classList.remove(item);
    });
  },
  /**
   * 添加class
   * @param {Object} el 元素
   * @param {Object} className 支持多类,以空格划分
   */
  addClass(el, className) {
    if (!this.isElement(el)) {
      throw new TypeError("The first argument must be an element");
    }
    if (!className || typeof className != "string") {
      throw new TypeError("The second argument must be a string");
    }
    let classList = el.classList;
    let classArray = string.trim(className).split(/\s+/);
    classArray.forEach((item) => {
      classList.add(item);
    });
  },
  /**
   * 判断指定元素是否含有指定类名
   * @param {Object} el 元素
   * @param {Object} className 支持多类,以空格划分
   */
  hasClass(el, className) {
    if (!this.isElement(el)) {
      throw new TypeError("The first argument must be an element");
    }
    if (!className || typeof className != "string") {
      throw new TypeError("The second argument must be a string");
    }
    let classList = el.classList;
    let classArray = string.trim(className).split(/\s+/);
    return classArray.every((item) => {
      return classList.contains(item);
    });
  },
  /**
   * 监听元素滚动到顶部或者底部
   * @param {Object} el 支持css选择器字符串 未指定则为窗口滚动
   * @param {Object} callback 回调函数
   */
  scrollTopBottomTrigger(el, callback) {
    if (typeof el == "string" && el) {
      el = document.body.querySelector(el);
    }
    let scrollEle = window;
    if (this.isElement(el) && el != document.body && el != document.documentElement) {
      scrollEle = el;
    }
    if (typeof el == "function") {
      callback = el;
    }
    let flag = true;
    scrollEle.addEventListener("scroll", () => {
      if (this.getScrollTop(scrollEle) <= 0) {
        let options = {
          state: "top",
          target: scrollEle
        };
        if (!flag) {
          return;
        }
        if (typeof callback == "function") {
          flag = false;
          callback(options);
        }
      } else {
        let options = {
          state: "bottom",
          target: scrollEle
        };
        let height = 0;
        if (scrollEle == window) {
          height = window.innerHeight;
        } else {
          height = scrollEle.clientHeight;
        }
        if (number.add(this.getScrollTop(scrollEle), height) + 1 >= this.getScrollHeight(scrollEle) && height != this.getScrollHeight(scrollEle)) {
          if (!flag) {
            return;
          }
          if (typeof callback == "function") {
            flag = false;
            callback(options);
          }
        } else {
          flag = true;
        }
      }
    });
  },
  /**
   * 获取文档或元素的总宽度
   * @param {Object} el 支持css选择器字符串 未指定则表示整个页面文档
   */
  getScrollWidth(el) {
    if (typeof el == "string" && el) {
      el = document.body.querySelector(el);
    }
    let scrollWidth = 0;
    if (this.isElement(el) && el != document.documentElement && el != document.body) {
      scrollWidth = el.scrollWidth;
    } else {
      if (document.documentElement.scrollWidth == 0 || document.body.scrollWidth == 0) {
        scrollWidth = document.documentElement.scrollWidth || document.body.scrollWidth;
      } else {
        scrollWidth = document.documentElement.scrollWidth > document.body.scrollWidth ? document.documentElement.scrollWidth : document.body.scrollWidth;
      }
    }
    return scrollWidth;
  },
  /**
   * 获取文档或者元素的总高度
   * @param {Object} el 支持css选择器字符串 未指定则表示整个页面文档
   */
  getScrollHeight(el) {
    if (typeof el == "string" && el) {
      el = document.body.querySelector(el);
    }
    let scrollHeight = 0;
    if (this.isElement(el) && el != document.documentElement && el != document.body) {
      scrollHeight = el.scrollHeight;
    } else {
      if (document.documentElement.scrollHeight == 0 || document.body.scrollHeight == 0) {
        scrollHeight = document.documentElement.scrollHeight || document.body.scrollHeight;
      } else {
        scrollHeight = document.documentElement.scrollHeight > document.body.scrollHeight ? document.documentElement.scrollHeight : document.body.scrollHeight;
      }
    }
    return scrollHeight;
  },
  /**
   * 设置滚动条在Y轴上的距离
   * @param {Object} options {el,number,time} el支持css选择器字符串 未指定则为窗口滚动
   */
  setScrollTop(options) {
    let isWindow = false;
    let el = options.el;
    if (typeof el == "string" && el) {
      el = document.body.querySelector(el);
    }
    let number$1 = options.number || 0;
    let time = options.time || 0;
    if (!this.isElement(el) || el == document.body || el == document.documentElement || el == window) {
      isWindow = true;
    }
    return new Promise((resolve) => {
      if (time <= 0) {
        if (isWindow) {
          document.documentElement.scrollTop = document.body.scrollTop = number$1;
        } else {
          el.scrollTop = number$1;
        }
        resolve();
      } else {
        let spacingTime = 10;
        let spacingIndex = number.divide(time, spacingTime);
        let nowTop = this.getScrollTop(el);
        let everTop = number.divide(number.subtract(number$1, nowTop), spacingIndex);
        let scrollTimer = setInterval(() => {
          if (spacingIndex > 0) {
            spacingIndex--;
            if (isWindow) {
              document.documentElement.scrollTop = document.body.scrollTop = nowTop = number.add(nowTop, everTop);
            } else {
              el.scrollTop = nowTop = number.add(nowTop, everTop);
            }
          } else {
            clearInterval(scrollTimer);
            resolve();
          }
        }, spacingTime);
      }
    });
  },
  /**
   * 获取滚动条在Y轴上滚动的距离
   * @param {Object} el 支持css选择器字符串 未指定则为窗口滚动
   */
  getScrollTop(el) {
    if (typeof el == "string" && el) {
      el = document.body.querySelector(el);
    }
    let scrollTop = 0;
    if (this.isElement(el) && el != document.body && el != document.documentElement && el != window) {
      scrollTop = el.scrollTop;
    } else {
      if (document.documentElement.scrollTop == 0 || document.body.scrollTop == 0) {
        scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
      } else {
        scrollTop = document.documentElement.scrollTop > document.body.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
      }
    }
    return scrollTop;
  },
  /**
   * 获取滚动条在X轴上滚动的距离
   * @param {Object} el 支持css选择器字符串 未指定则为窗口滚动
   */
  getScrollLeft(el) {
    if (typeof el == "string" && el) {
      el = document.body.querySelector(el);
    }
    let scrollLeft = 0;
    if (this.isElement(el) && el != document.body && el != document.documentElement && el != window) {
      scrollLeft = el.scrollLeft;
    } else {
      if (document.documentElement.scrollLeft == 0 || document.body.scrollLeft == 0) {
        scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;
      } else {
        scrollLeft = document.documentElement.scrollLeft > document.body.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft;
      }
    }
    return scrollLeft;
  },
  /**
   * 设置滚动条在X轴上的距离
   * @param {Object} options {el,number,time} el支持css选择器字符串 未指定则为窗口滚动
   */
  setScrollLeft(options) {
    let isWindow = false;
    let el = options.el;
    if (typeof el == "string" && el) {
      el = document.body.querySelector(el);
    }
    let number$1 = options.number || 0;
    let time = options.time || 0;
    if (!this.isElement(el) || el == document.body || el == document.documentElement || el == window) {
      isWindow = true;
    }
    return new Promise((resolve) => {
      if (time <= 0) {
        if (isWindow) {
          document.documentElement.scrollLeft = document.body.scrollLeft = number$1;
        } else {
          el.scrollLeft = number$1;
        }
        resolve();
      } else {
        let spacingTime = 10;
        let spacingIndex = number.divide(time, spacingTime);
        let nowLeft = this.getScrollLeft(el);
        let everLeft = number.divide(number.subtract(number$1, nowLeft), spacingIndex);
        let scrollTimer = setInterval(() => {
          if (spacingIndex > 0) {
            spacingIndex--;
            if (isWindow) {
              document.documentElement.scrollLeft = document.body.scrollLeft = nowLeft = number.add(nowLeft, everLeft);
            } else {
              el.scrollLeft = nowLeft = number.add(nowLeft, everLeft);
            }
          } else {
            clearInterval(scrollTimer);
            resolve();
          }
        }, spacingTime);
      }
    });
  },
  /**
   * 获取元素指定样式
   * @param {Object} el 元素
   * @param {Object} cssName 样式名称
   */
  getCssStyle(el, cssName) {
    if (!this.isElement(el)) {
      throw new TypeError("The first argument must be an element");
    }
    if (!cssName || typeof cssName != "string") {
      throw new TypeError("The second argument must be a string");
    }
    let cssText = "";
    if (document.defaultView && document.defaultView.getComputedStyle) {
      cssText = document.defaultView.getComputedStyle(el)[cssName];
    } else {
      cssText = el.currentStyle[cssName];
    }
    return cssText;
  },
  /**
   * 判断字符串属于哪种选择器
   * @param {Object} selector
   */
  getCssSelector(selector) {
    if (!selector || typeof selector != "string") {
      throw new TypeError("The argument must be a selector string");
    }
    if (/^#{1}/.test(selector)) {
      return {
        type: "id",
        value: selector.substr(1)
      };
    }
    if (/^\./.test(selector)) {
      return {
        type: "class",
        value: selector.substr(1)
      };
    }
    if (/^\[(.+)\]$/.test(selector)) {
      let type = "attribute";
      let value = "";
      let attribute = string.trim(selector, true).substring(1, string.trim(selector, true).length - 1);
      let arry = attribute.split("=");
      if (arry.length == 1) {
        value = arry[0];
      }
      if (arry.length == 2) {
        value = {
          attributeName: arry[0],
          attributeValue: arry[1].replace(/\'/g, "").replace(/\"/g, "")
          //去除属性值的单引号或者双引号
        };
      }
      return {
        type,
        value
      };
    }
    return {
      type: "tag",
      value: selector
    };
  },
  /**
   * 获取元素距离可视窗口的位置
   * @param {Object} el 支持css选择器字符串 未指定则为document.body
   */
  getElementBounding(el) {
    if (typeof el == "string" && el) {
      el = document.body.querySelector(el);
    }
    if (!this.isElement(el)) {
      el = document.body;
    }
    let point = el.getBoundingClientRect();
    let top = point.top;
    let bottom = number.subtract(document.documentElement.clientHeight || window.innerHeight, point.bottom);
    let left = point.left;
    let right = number.subtract(document.documentElement.clientWidth || window.innerWidth, point.right);
    return {
      top,
      bottom,
      left,
      right
    };
  },
  /**
   * 判断是否是元素
   * @param {Object} el
   */
  isElement(el) {
    return el && el instanceof Node && el.nodeType === 1;
  },
  /**
   * 字符串转dom
   * @param {Object} html
   */
  string2dom(html) {
    if (!html || typeof html != "string") {
      throw new TypeError("The argument must be an HTML string");
    }
    const template = document.createElement("template");
    template.innerHTML = html;
    if (template.content.children.length == 1) {
      return template.content.children[0];
    } else {
      return Array.from(template.content.children);
    }
  }
};
const dataName = "_dap-datas";
const data = {
  /**
   * 移除指定数据
   * @param {Object} el
   * @param {Object} key
   */
  remove(el, key) {
    if (!(el instanceof Document) && !element.isElement(el) && !element.isWindow(el)) {
      throw new TypeError("The first argument must be an element node or window or document");
    }
    let data2 = el[dataName] || {};
    if (key === void 0 || key === null || key === "") {
      el[dataName] = {};
    } else {
      delete data2[key];
      el[dataName] = data2;
    }
  },
  /**
   * 判断是否含有指定数据
   * @param {Object} el
   * @param {Object} key
   */
  has(el, key) {
    if (!(el instanceof Document) && !element.isElement(el) && !element.isWindow(el)) {
      throw new TypeError("The first argument must be an element node or window or document");
    }
    if (key === void 0 || key === null || key === "") {
      throw new TypeError("The second parameter must be a unique key");
    }
    let data2 = el[dataName] || {};
    return data2.hasOwnProperty(key);
  },
  /**
   * 获取元素指定数据
   * @param {Object} el
   * @param {Object} key
   */
  get(el, key) {
    if (!(el instanceof Document) && !element.isElement(el) && !element.isWindow(el)) {
      throw new TypeError("The first argument must be an element node or window or document");
    }
    let data2 = el[dataName] || {};
    if (key === void 0 || key === null || key === "") {
      return data2;
    } else {
      return data2[key];
    }
  },
  /**
   * 设置元素指定数据
   * @param {Object} el
   * @param {Object} key
   * @param {Object} value
   */
  set(el, key, value) {
    if (!(el instanceof Document) && !element.isElement(el) && !element.isWindow(el)) {
      throw new TypeError("The first argument must be an element node or window or document");
    }
    if (key === void 0 || key === null || key === "") {
      throw new TypeError("The second parameter must be a unique key");
    }
    let data2 = el[dataName] || {};
    data2[key] = value;
    el[dataName] = data2;
  }
};
const common = {
  /**
   * 常用判断
   * @param {Object} text 要判断的字符串
   * @param {Object} param 判断的类型字符串
   */
  matchingText(text, param) {
    if (!text || typeof text != "string") {
      throw new TypeError("The first argument must be a string");
    }
    if (!param || typeof param != "string") {
      throw new TypeError("The second argument must be a string");
    }
    let reg = null;
    if (param == "Chinese") {
      reg = /^[\u4e00-\u9fa5]+$/;
    }
    if (param == "chinese") {
      reg = /[\u4e00-\u9fa5]/;
    }
    if (param == "email") {
      reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
    }
    if (param == "username") {
      reg = /^[a-zA-Z0-9_]{4,16}$/;
    }
    if (param == "int+") {
      reg = /^\d+$/;
    }
    if (param == "int-") {
      reg = /^-\d+$/;
    }
    if (param == "int") {
      reg = /^-?\d+$/;
    }
    if (param == "pos") {
      reg = /^\d*\.?\d+$/;
    }
    if (param == "neg") {
      reg = /^-\d*\.?\d+$/;
    }
    if (param == "number") {
      reg = /^-?\d*\.?\d+$/;
    }
    if (param == "phone") {
      reg = /^1[0-9]\d{9}$/;
    }
    if (param == "idCard") {
      reg = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
    }
    if (param == "url") {
      reg = /^(https?|ftp):\/\/(-\.)?([^\s\/?\.#-]+\.?)+(\/[^\s]*)?$/;
    }
    if (param == "IPv4") {
      reg = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
    }
    if (param == "hex") {
      reg = /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/;
    }
    if (param == "rgb") {
      reg = /^rgb\((25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d),\s?(25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d),\s?(25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\)$/;
    }
    if (param == "rgba") {
      reg = /^rgba\((25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d),\s?(25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d),\s?(25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d),\s?(0?\.\d|1(\.0)?|0)\)$/;
    }
    if (param == "QQ") {
      reg = /^[1-9][0-9]{4,10}$/;
    }
    if (param == "weixin") {
      reg = /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/;
    }
    if (param == "plate") {
      reg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/;
    }
    if (!reg) {
      throw new Error("The second parameter is out of scope");
    }
    return reg.test(text);
  },
  /**
   * 根据参数名获取地址栏参数值
   * @param {Object} name
   */
  getUrlParams(name) {
    if (!name || typeof name != "string") {
      throw new TypeError("The argument must be a string");
    }
    let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    let search2 = window.location.search.substr(1);
    if (!search2) {
      let arr = window.location.hash.split("?");
      if (arr.length == 2) {
        search2 = arr[1];
      }
    }
    let r = search2.match(reg);
    if (r) {
      return decodeURIComponent(r[2]);
    }
    return null;
  },
  /**
   * 判断是否空对象
   * @param {Object} obj
   */
  isEmptyObject(obj2) {
    if (this.isObject(obj2)) {
      if (Object.keys(obj2).length == 0) {
        return true;
      }
      return false;
    }
    return false;
  },
  /**
   * 判断两个参数是否相等
   * @param {Object} a
   * @param {Object} b
   */
  equal(a, b) {
    if (typeof a !== typeof b) {
      return false;
    }
    if (this.isObject(a) && this.isObject(b)) {
      let aProps = Object.getOwnPropertyNames(a);
      let bProps = Object.getOwnPropertyNames(b);
      if (aProps.length != bProps.length) {
        return false;
      }
      let length = aProps.length;
      let isEqual = true;
      for (let i = 0; i < length; i++) {
        let propName = aProps[i];
        let propA = a[propName];
        let propB = b[propName];
        if (!this.equal(propA, propB)) {
          isEqual = false;
          break;
        }
      }
      return isEqual;
    }
    return a === b;
  },
  /**
   * 是否对象
   * @param {Object} val
   */
  isObject(val) {
    if (typeof val === "object" && val) {
      return true;
    }
    return false;
  },
  /**
   * 文本复制
   * @param {Object} text
   */
  copyText(text) {
    if (!text || typeof text != "string") {
      throw new TypeError("No text to copy is defined");
    }
    if (!navigator.clipboard) {
      throw new Error("navigator.clipboard must be obtained in a secure environment, such as localhost, 127.0.0.1, or https, so the method won't work");
    }
    return navigator.clipboard.writeText(text);
  },
  /**
   * 深度克隆
   * @param {Object} data
   */
  clone(data2) {
    if (this.isObject(data2)) {
      if (Array.isArray(data2)) {
        return data2.map((item) => {
          return this.clone(item);
        });
      }
      let newData = {};
      for (let key in data2) {
        newData[key] = this.clone(data2[key]);
      }
      return newData;
    }
    return data2;
  }
};
const parseEventName = (eventName) => {
  let eventNames = eventName.split(/[\s]+/g);
  let result = [];
  eventNames.forEach((name) => {
    let arr = name.split(".");
    let obj2 = {
      eventName: arr[0]
    };
    if (arr.length > 1) {
      obj2.guid = arr[1];
    }
    result.push(obj2);
  });
  return result;
};
const updateEvents = (events) => {
  let obj2 = {};
  let keys = Object.keys(events);
  keys.forEach((key) => {
    if (events[key]) {
      obj2[key] = events[key];
    }
  });
  return obj2;
};
const bindSingleListener = (el, eventName, guid, fn, options) => {
  let events = data.get(el, "dap-defined-events") || {};
  if (!guid) {
    guid = data.get(el, "dap-event-guid") || 0;
    data.set(el, "dap-event-guid", guid + 1);
  }
  guid = eventName + "." + guid;
  if (events[guid] && events[guid].type == eventName) {
    el.removeEventListener(eventName, events[guid].fn, events[guid].options);
  }
  el.addEventListener(eventName, fn, options);
  events[guid] = {
    type: eventName,
    fn,
    options
  };
  data.set(el, "dap-defined-events", events);
};
const unbindSingleListener = (el, eventName, guid) => {
  let events = data.get(el, "dap-defined-events") || {};
  let keys = Object.keys(events);
  let length = keys.length;
  for (let i = 0; i < length; i++) {
    let key = keys[i];
    if (events[key].type == eventName) {
      if (guid) {
        if (key == eventName + "." + guid) {
          el.removeEventListener(events[key].type, events[key].fn, events[key].options);
          events[key] = void 0;
        }
      } else {
        el.removeEventListener(events[key].type, events[key].fn, events[key].options);
        events[key] = void 0;
      }
    }
  }
  events = updateEvents(events);
  data.set(el, "dap-defined-events", events);
};
const event = {
  /**
   * 绑定事件
   * @param {Object} el 元素节点
   * @param {Object} eventName 事件名称
   * @param {Object} fn 函数
   * @param {Object} options 参数
   */
  on(el, eventName, fn, options) {
    if (!(el instanceof Document) && !element.isElement(el) && !element.isWindow(el)) {
      throw new TypeError("The first argument must be an element node or window or document");
    }
    if (!eventName || typeof eventName != "string") {
      throw new TypeError("The second argument must be a string");
    }
    if (!fn || typeof fn != "function") {
      throw new TypeError("The third argument must be a function");
    }
    if (!common.isObject(options)) {
      options = {};
    }
    const result = parseEventName(eventName);
    result.forEach((res) => {
      bindSingleListener(el, res.eventName, res.guid, fn.bind(el), options);
    });
  },
  /**
   * 事件解绑
   * @param {Object} el 元素节点
   * @param {Object} eventName 事件名称
   */
  off(el, eventName) {
    if (!(el instanceof Document) && !element.isElement(el) && !element.isWindow(el)) {
      throw new TypeError("The first argument must be an element node or window or document");
    }
    let events = data.get(el, "dap-defined-events");
    if (!events) {
      return;
    }
    if (!eventName) {
      let keys = Object.keys(events);
      let length = keys.length;
      for (let i = 0; i < length; i++) {
        let key = keys[i];
        el.removeEventListener(events[key].type, events[key].fn, events[key].options);
      }
      data.remove(el, "dap-defined-events");
      data.remove(el, "dap-event-guid");
      return;
    }
    const result = parseEventName(eventName);
    result.forEach((res) => {
      unbindSingleListener(el, res.eventName, res.guid);
    });
  },
  /**
   * 获取绑定的所有事件
   * @param {*} el
   */
  get(el) {
    if (!(el instanceof Document) && !element.isElement(el) && !element.isWindow(el)) {
      throw new TypeError("The first argument must be an element node or window or document");
    }
    let events = data.get(el, "dap-defined-events");
    if (!events) {
      return;
    }
    return events;
  }
};
const color = {
  /**
   * rgb转hsv值
   * @param {Object} rgb rgb值，数组
   */
  rgb2hsv(rgb) {
    if (!Array.isArray(rgb) || rgb.length != 3) {
      throw new TypeError("Invalid argument");
    }
    let h2 = 0;
    let s = 0;
    let v = 0;
    let r = rgb[0] >= 255 ? 255 : rgb[0];
    let g = rgb[1] >= 255 ? 255 : rgb[1];
    let b = rgb[2] >= 255 ? 255 : rgb[2];
    r = r <= 0 ? 0 : r;
    g = g <= 0 ? 0 : g;
    b = b <= 0 ? 0 : b;
    let max = Math.max(r, g, b);
    let min = Math.min(r, g, b);
    v = max / 255;
    if (max === 0) {
      s = 0;
    } else {
      s = 1 - min / max;
    }
    if (max === min) {
      h2 = 0;
    } else if (max === r && g >= b) {
      h2 = 60 * ((g - b) / (max - min)) + 0;
    } else if (max === r && g < b) {
      h2 = 60 * ((g - b) / (max - min)) + 360;
    } else if (max === g) {
      h2 = 60 * ((b - r) / (max - min)) + 120;
    } else if (max === b) {
      h2 = 60 * ((r - g) / (max - min)) + 240;
    }
    return [h2, s * 100, v * 100];
  },
  /**
   * hsv格式值转rgb值
   * @param {Object} hsv hsv值，数组
   */
  hsv2rgb(hsv) {
    if (!Array.isArray(hsv) || hsv.length != 3) {
      throw new TypeError("Invalid argument");
    }
    let h2 = hsv[0] >= 360 || hsv[0] <= 0 ? 0 : hsv[0];
    let s = hsv[1] >= 100 ? 100 : hsv[1];
    s = s <= 0 ? 0 : s;
    let v = hsv[2] >= 100 ? 100 : hsv[2];
    v = v <= 0 ? 0 : v;
    s = s / 100;
    v = v / 100;
    let r = 0;
    let g = 0;
    let b = 0;
    let i = parseInt(h2 / 60 % 6 + "");
    let f = h2 / 60 - i;
    let p = v * (1 - s);
    let q = v * (1 - f * s);
    let t = v * (1 - (1 - f) * s);
    switch (i) {
      case 0:
        r = v;
        g = t;
        b = p;
        break;
      case 1:
        r = q;
        g = v;
        b = p;
        break;
      case 2:
        r = p;
        g = v;
        b = t;
        break;
      case 3:
        r = p;
        g = q;
        b = v;
        break;
      case 4:
        r = t;
        g = p;
        b = v;
        break;
      case 5:
        r = v;
        g = p;
        b = q;
        break;
    }
    r = parseInt(r * 255 + "");
    g = parseInt(g * 255 + "");
    b = parseInt(b * 255 + "");
    return [r, g, b];
  },
  /**
   * rgb值转十六进制
   * @param {Array} rgb rgb值，数组
   */
  rgb2hex(rgb) {
    if (!Array.isArray(rgb) || rgb.length != 3) {
      throw new TypeError("Invalid argument");
    }
    let r = rgb[0];
    let g = rgb[1];
    let b = rgb[2];
    let hex = "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
    return hex;
  },
  /**
   * 十六进制颜色转rgb
   * @param {String} hex 十六进制颜色值
   */
  hex2rgb(hex) {
    if (!hex || typeof hex != "string") {
      throw new TypeError("The argument must be a string");
    }
    let color2 = hex.toLowerCase();
    if (!common.matchingText(color2, "hex")) {
      throw new TypeError("The argument must be a hexadecimal color value");
    }
    if (color2.length === 4) {
      let colorNew = "#";
      for (let i = 1; i < 4; i += 1) {
        colorNew += color2.slice(i, i + 1).concat(color2.slice(i, i + 1));
      }
      color2 = colorNew;
    }
    let colorChange = [];
    for (let i = 1; i < 7; i += 2) {
      colorChange.push(parseInt("0x" + color2.slice(i, i + 2)));
    }
    return colorChange;
  }
};
const file = {
  /**
   * 根据文件获取可预览的图片路径
   * @param {Object} file
   */
  getImageUrl(file2) {
    if (!file2 || !(file2 instanceof File)) {
      throw new TypeError("The argument must be a File object");
    }
    return window.URL.createObjectURL(file2);
  },
  /**
   * 将JS的file对象转为BASE64位字符串，通过then方法回调,参数为base64字符串
   * @param {Object} file
   */
  dataFileToBase64(file2) {
    return new Promise((resolve, reject) => {
      if (!file2 || !(file2 instanceof File)) {
        reject(new TypeError("The argument must be a File object"));
      }
      let reader = new FileReader();
      reader.readAsDataURL(file2);
      reader.onloadend = () => {
        let dataURL = reader.result;
        resolve(dataURL);
      };
    });
  },
  /**
   * 将base64位格式文件转换为file对象
   * @param {Object} base64String base64位格式字符串
   * @param {Object} fileName 转换后的文件名字，包含后缀
   */
  dataBase64toFile(base64String, fileName) {
    if (!base64String || typeof base64String != "string") {
      throw new TypeError("The first argument must be a string");
    }
    if (!fileName || typeof fileName != "string") {
      throw new TypeError("The second argument must be a string");
    }
    let arr = base64String.split(",");
    let mime = arr[0].match(/:(.*?);/)[1];
    let bstr = atob(arr[1]);
    let n = bstr.length;
    let u8arr = new Uint8Array(n);
    while (n--) {
      u8arr[n] = bstr.charCodeAt(n);
    }
    return new File([u8arr], fileName, {
      type: mime
    });
  },
  /**
   * 图片压缩方法
   * @param {*} file 需要压缩的图片File文件
   * @param {*} opts 压缩参数
   */
  compressImage(file2, opts) {
    const options = {
      //压缩图片的宽，单位px，如果不设置默认为原图宽
      width: void 0,
      //压缩图片质量，默认为原图的0.8
      quality: 0.8,
      //图片类型，jpeg或者webp，默认为jpeg
      mimeType: "jpeg",
      //压缩后的最大值，单位kb，默认为0表示不设置此值
      maxSize: 0,
      //小于该大小的图片不进行压缩，单位kb，默认为0表示任何图片都要压缩
      minSize: 0
    };
    if (common.isObject(opts)) {
      if (number.isNumber(opts.width)) {
        options.width = opts.width;
      }
      if (number.isNumber(opts.quality) && opts.quality >= 0 && opts.quality <= 1) {
        options.quality = opts.quality;
      }
      if (opts.mimeType == "jpeg" || opts.mimeType == "webp") {
        options.mimeType = opts.mimeType;
      }
      if (number.isNumber(opts.maxSize)) {
        options.maxSize = opts.maxSize;
      }
      if (number.isNumber(opts.minSize)) {
        options.minSize = opts.minSize;
      }
    }
    const createFile = (canvas, fileName, quality) => {
      let url = canvas.toDataURL("image/" + options.mimeType, quality);
      let file22 = this.dataBase64toFile(url, fileName);
      if (options.maxSize > 0 && file22.size > options.maxSize * 1024) {
        quality = quality <= 0 ? 0 : Number((quality - 0.01).toFixed(2));
        const res = createFile(canvas, fileName, quality);
        url = res.url;
        file22 = res.file;
        quality = res.quality;
      }
      return {
        file: file22,
        url,
        quality
      };
    };
    return new Promise((resolve, reject) => {
      let reader = new FileReader();
      reader.readAsDataURL(file2);
      reader.onload = () => {
        let url = reader.result;
        let img = new Image();
        img.src = url;
        img.onload = () => {
          if (options.minSize > 0 && file2.size <= options.minSize * 1024) {
            resolve({
              file: file2,
              url,
              quality: 1,
              width: img.width,
              height: img.height
            });
            return;
          }
          let canvas = document.createElement("canvas");
          let context = canvas.getContext("2d");
          canvas.width = options.width || img.width;
          canvas.height = options.width ? options.width / (img.width / img.height) : img.height;
          context.drawImage(img, 0, 0, canvas.width, canvas.height);
          let index = file2.name.lastIndexOf(".");
          const fileName = file2.name.substring(0, index) + "." + options.mimeType;
          let res = createFile(canvas, fileName, options.quality);
          resolve({
            ...res,
            width: canvas.width,
            height: canvas.height
          });
        };
        img.onerror = () => {
          reject(new Error("Failed to load image file"));
        };
      };
      reader.onerror = () => {
        reject(new Error("Failed to load image file"));
      };
    });
  }
};
const platform = {
  //设备语言类型
  language() {
    return window.navigator.browserLanguage || window.navigator.language;
  },
  /**
   * 获取设备类型
   */
  device() {
    const userAgent = window.navigator.userAgent;
    return {
      PC: !userAgent.match(/AppleWebKit.*Mobile.*/),
      //是否移动终端
      Mobile: !!userAgent.match(/AppleWebKit.*Mobile.*/),
      //是否iPhone
      iPhone: userAgent.includes("iPhone"),
      //是否手机
      Phone: userAgent.includes("Android") && /(?:Mobile)/.test(userAgent) || userAgent.includes("iPhone") || /(?:Windows Phone)/.test(userAgent),
      //是否iPad
      iPad: userAgent.includes("iPad"),
      //是否平板电脑
      Tablet: userAgent.includes("iPad") || userAgent.includes("Android") && !/(?:Mobile)/.test(userAgent) || userAgent.includes("Firefox") && /(?:Tablet)/.test(userAgent),
      //windows手机
      WindowsPhone: /(?:Windows Phone)/.test(userAgent)
    };
  },
  /**
   * 获取浏览器类型
   */
  browser() {
    const userAgent = window.navigator.userAgent;
    return {
      //是否edge浏览器
      Edge: !!userAgent.match(/Edg\/([\d.]+)/),
      //是否微信内置浏览器
      weixin: userAgent.includes("MicroMessenger"),
      //是否QQ内置浏览器
      QQ: userAgent.includes("QQ"),
      //是否QQ浏览器
      QQBrowser: userAgent.includes("MQQBrowser"),
      //是否UC浏览器
      UC: userAgent.includes("UCBrowser"),
      //是否谷歌浏览器
      Chrome: userAgent.includes("Chrome"),
      //是否火狐浏览器
      Firefox: userAgent.includes("Firefox"),
      //是否搜狗浏览器
      sougou: userAgent.toLocaleLowerCase().includes("se 2.x") || userAgent.toLocaleLowerCase().includes("metasr") || userAgent.toLocaleLowerCase().includes("sogou"),
      //是否safari浏览器
      Safari: userAgent.includes("Safari") && !userAgent.includes("Chrome")
    };
  },
  /**
   * 获取浏览器内核
   */
  browserKernel() {
    const userAgent = window.navigator.userAgent;
    if (userAgent.includes("Presto")) {
      return "opera";
    } else if (userAgent.includes("AppleWebKit")) {
      return "webkit";
    } else if (userAgent.includes("Gecko") && !userAgent.includes("KHTML")) {
      return "gecko";
    }
    return "";
  },
  /**
   * 获取操作系统数据
   */
  os() {
    const userAgent = window.navigator.userAgent;
    return {
      //是否Windows系统
      Windows: userAgent.includes("Windows"),
      //x64/x32
      Windows_CPU: function() {
        if (userAgent.toLocaleLowerCase().includes("win64") || userAgent.toLocaleLowerCase().includes("wow64")) {
          return "x64";
        } else if (userAgent.toLocaleLowerCase().includes("win32") || userAgent.toLocaleLowerCase().includes("wow32")) {
          return "x32";
        }
        return "";
      }(),
      //Windows版本
      Windows_Version: function() {
        if (userAgent.includes("Windows NT 6.1") || userAgent.includes("Windows 7")) {
          return "Win7";
        }
        if (userAgent.includes("Windows NT 6.3") || userAgent.includes("Windows NT 6.2") || userAgent.includes("Windows NT 8")) {
          return "Win8";
        }
        if (userAgent.includes("Windows NT 10") || userAgent.includes("Windows NT 6.4")) {
          return "Win10";
        }
        return "";
      }(),
      //是否Mac
      Mac: userAgent.includes("Macintosh"),
      //Mac版本
      Mac_Version: function() {
        if (userAgent.includes("Macintosh")) {
          const matches = userAgent.match(/Mac OS X ([^\s]+)\)/);
          if (matches && matches[1]) {
            return matches[1].split(/_|\./).join(".");
          }
        }
        return "";
      }(),
      //是否ios系统
      ios: !!userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
      //ios系统版本
      ios_Version: function() {
        if (!!userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)) {
          const matches = userAgent.match(/CPU.+OS ([^\s]+) like Mac OS X/);
          if (matches && matches[1]) {
            return matches[1].split(/_|\./).join(".");
          }
        }
        return "";
      }(),
      //是否Android系统
      Android: userAgent.includes("Android"),
      //Android系统版本
      Android_Version: function() {
        const matches = userAgent.match(/Android ([^\s]+);/);
        if (matches && matches[1]) {
          return matches[1].split(/_|\./).join(".");
        }
        return "";
      }(),
      //是否Linux系统
      Linux: userAgent.includes("Linux"),
      //是否鸿蒙系统
      HarmonyOS: userAgent.includes("HarmonyOS"),
      //是否Ubuntu系统
      Ubuntu: userAgent.includes("Ubuntu")
    };
  }
};
const speech = {
  /**
   * 将文字加入语音播报队列
   * @param {Object} text
   */
  start(text, params) {
    if (!window.SpeechSynthesisUtterance || !window.speechSynthesis) {
      throw new Error("The current browser does not support this syntax");
    }
    let defaultParams = {
      //话语的音调(0-2，值越大越尖锐,越低越低沉)
      pitch: 0.8,
      //说话的速度(0-10，值越大语速越快,越小语速越慢)
      rate: 1,
      //说话的音量：0-1
      volume: 1,
      //播放开始事件
      start: function() {
      },
      //播放结束事件
      end: function() {
      },
      //播放暂停事件
      pause: function() {
      },
      //播放恢复事件
      resume: function() {
      },
      //播放出错事件
      error: function() {
      }
    };
    if (!common.isObject(params)) {
      params = {};
    }
    if (number.isNumber(params.pitch)) {
      defaultParams.pitch = params.pitch;
    }
    if (number.isNumber(params.rate)) {
      defaultParams.rate = params.rate;
    }
    if (number.isNumber(params.volume)) {
      defaultParams.volume = params.volume;
    }
    if (typeof params.start == "function") {
      defaultParams.start = params.start;
    }
    if (typeof params.end == "function") {
      defaultParams.end = params.end;
    }
    if (typeof params.pause == "function") {
      defaultParams.pause = params.pause;
    }
    if (typeof params.resume == "function") {
      defaultParams.resume = params.resume;
    }
    if (typeof params.error == "function") {
      defaultParams.error = params.error;
    }
    const speech2 = new SpeechSynthesisUtterance();
    speech2.text = text;
    speech2.pitch = defaultParams.pitch;
    speech2.rate = defaultParams.rate;
    speech2.volume = defaultParams.volume;
    speech2.lang = "zh-CN";
    speech2.onstart = (event2) => {
      defaultParams.start.apply(speech2, [
        event2,
        {
          text,
          pitch: defaultParams.pitch,
          rate: defaultParams.rate,
          volume: defaultParams.volume
        }
      ]);
    };
    speech2.onend = (event2) => {
      defaultParams.end.apply(speech2, [
        event2,
        {
          text,
          pitch: defaultParams.pitch,
          rate: defaultParams.rate,
          volume: defaultParams.volume
        }
      ]);
    };
    speech2.onpause = (event2) => {
      defaultParams.pause.apply(speech2, [
        event2,
        {
          text,
          pitch: defaultParams.pitch,
          rate: defaultParams.rate,
          volume: defaultParams.volume
        }
      ]);
    };
    speech2.onresume = (event2) => {
      defaultParams.resume.apply(speech2, [
        event2,
        {
          text,
          pitch: defaultParams.pitch,
          rate: defaultParams.rate,
          volume: defaultParams.volume
        }
      ]);
    };
    speech2.onerror = (event2) => {
      defaultParams.error.apply(speech2, [
        event2,
        {
          text,
          pitch: defaultParams.pitch,
          rate: defaultParams.rate,
          volume: defaultParams.volume
        }
      ]);
    };
    window.speechSynthesis.speak(speech2);
  },
  /**
   * 停止播报，停止所有播报队列里面的语音
   */
  stop() {
    if (!window.SpeechSynthesisUtterance || !window.speechSynthesis) {
      throw new Error("The current browser does not support this syntax");
    }
    window.speechSynthesis.cancel();
  },
  /**
   * 暂停播报
   */
  pause() {
    if (!window.SpeechSynthesisUtterance || !window.speechSynthesis) {
      throw new Error("The current browser does not support this syntax");
    }
    window.speechSynthesis.pause();
  },
  /**
   * 恢复暂停的播报
   */
  resume() {
    if (!window.SpeechSynthesisUtterance || !window.speechSynthesis) {
      throw new Error("The current browser does not support this syntax");
    }
    window.speechSynthesis.resume();
  }
};
const obj = { number, data, element, event, common, color, file, string, platform, speech };
const componentIsMatch = (instance, childName, names) => {
  const component = defineComponent(() => {
    const vnodes = instance.slots.default ? instance.slots.default() : [];
    const isMatch = vnodes.every((vnode) => {
      if (typeof vnode.type == "symbol") {
        return true;
      }
      return obj.common.isObject(vnode.type) && vnode.type.name == childName;
    });
    if (!isMatch) {
      throw new Error(`The default slot for component "${names[0]}" can only accommodate component "${names[1]}"`);
    }
    return () => {
      return null;
    };
  });
  createApp(component).mount(document.createElement("div"));
};
const parentIsMatch = (children, parentInstance, parentName, names) => {
  if (!children || !parentInstance || parentInstance.type.name != parentName) {
    throw new Error(`Component "${names[1]}" cannot be used alone and must be placed in the default slot of component "${names[0]}"`);
  }
};
const withInstall = (component) => {
  component.install = (app) => {
    app.component(component.name, component);
  };
  return component;
};
const withInstallDirective = (name, directive) => {
  directive.install = (app) => {
    app.directive(name, directive);
  };
  return directive;
};
const useDark = (dark) => {
  if (dark) {
    document.documentElement.setAttribute("data-mvi-dark", "true");
  } else {
    document.documentElement.removeAttribute("data-mvi-dark");
  }
};
const isDark = () => {
  return !!document.documentElement.getAttribute("data-mvi-dark");
};
class Anchor {
  constructor(element2, options) {
    //点击的元素
    __publicField(this, "$el");
    //锚点到的元素
    __publicField(this, "$target");
    //相对的父祖元素
    __publicField(this, "$root");
    //回调函数
    __publicField(this, "callback");
    //间隔效果
    __publicField(this, "time");
    //距离
    __publicField(this, "distance");
    //是否初始化了
    __publicField(this, "hasInit", false);
    options = obj.common.isObject(options) ? options : {};
    this.$el = element2;
    this.$target = options.target;
    this.$root = options.root;
    this.callback = options.callback;
    this.time = options.time;
    this.distance = options.distance;
  }
  //api：初始化
  init() {
    if (this.hasInit) {
      return;
    }
    this.hasInit = true;
    if (typeof this.$root == "string" && this.$root) {
      this.$root = document.documentElement.querySelector(this.$root);
    }
    if (typeof this.$target == "string" && this.$target) {
      this.$target = document.documentElement.querySelector(this.$target);
    }
    if (!obj.element.isElement(this.$el)) {
      throw new TypeError("The element you click on is not a node element");
    }
    if (!obj.element.isElement(this.$target)) {
      throw new TypeError("Anchor element is not a node element");
    }
    if (!obj.number.isNumber(this.time)) {
      this.time = 0;
    }
    if (typeof this.callback != "function") {
      this.callback = function() {
      };
    }
    if (!obj.number.isNumber(this.distance)) {
      this.distance = 0.1;
    }
    if (obj.element.isElement(this.$root)) {
      obj.event.on(this.$el, "click.anchor", () => {
        let scrollTop = obj.element.getElementPoint(this.$target, this.$root).top;
        obj.element.setScrollTop({
          el: this.$root,
          number: scrollTop - obj.element.rem2px(this.distance),
          time: this.time
        }).then(() => {
          let top = scrollTop - obj.element.rem2px(this.distance) <= 0 ? 0 : scrollTop - obj.element.rem2px(this.distance);
          this.callback(top);
        });
      });
    } else {
      obj.event.on(this.$el, "click.anchor", () => {
        let scrollTop = obj.element.getElementPoint(this.$target).top;
        obj.element.setScrollTop({
          number: scrollTop - obj.element.rem2px(this.distance),
          time: this.time
        }).then(() => {
          let top = scrollTop - obj.element.rem2px(this.distance) <= 0 ? 0 : scrollTop - obj.element.rem2px(this.distance);
          this.callback(top);
        });
      });
    }
  }
}
const vAnchor = withInstallDirective("anchor", {
  mounted(el, binding) {
    const options = {};
    if (obj.common.isObject(binding.value)) {
      Object.assign(options, binding.value);
    }
    const anchor = new Anchor(el, options);
    anchor.init();
  }
});
class Drag {
  constructor(element2, options) {
    //被拖拽的元素
    __publicField(this, "$el");
    //可拖拽的区域
    __publicField(this, "$container");
    //x轴方向是否可拖动
    __publicField(this, "draggableX");
    //Y轴方向是否可拖动
    __publicField(this, "draggableY");
    //值为on时元素的中心可以在容器边界上，值为in时元素全部只能在容器内，值为out时元素可以在容器外部边缘
    __publicField(this, "mode");
    //是否改变鼠标形状
    __publicField(this, "cursor");
    //元素开始拖动时触发
    __publicField(this, "beforeDrag");
    //元素被拖动时触发
    __publicField(this, "drag");
    //元素拖拽结束触发
    __publicField(this, "dragged");
    //初始化完毕的回调
    __publicField(this, "ready");
    //是否可拖动
    __publicField(this, "draggable", false);
    //是否已经初始化
    __publicField(this, "hasInit", false);
    //X坐标
    __publicField(this, "pageX", 0);
    //Y坐标
    __publicField(this, "pageY", 0);
    //唯一值
    __publicField(this, "guid", this.createGuid());
    options = obj.common.isObject(options) ? options : {};
    this.$el = element2;
    this.$container = options.container;
    this.draggableX = options.draggableX;
    this.draggableY = options.draggableY;
    this.mode = options.mode;
    this.cursor = options.cursor;
    this.drag = options.drag;
    this.beforeDrag = options.beforeDrag;
    this.dragged = options.dragged;
    this.ready = options.ready;
  }
  //设置拖拽事件
  setOn() {
    obj.event.on(this.$el, "touchstart.drag", (e) => {
      if (!this.draggableX && !this.draggableY) {
        return;
      }
      this.pageX = e.targetTouches[0].pageX - obj.element.getElementPoint(this.$el, this.$container).left;
      this.pageY = e.targetTouches[0].pageY - obj.element.getElementPoint(this.$el, this.$container).top;
      this.draggable = true;
      if (this.cursor) {
        this.$el.style.cursor = "move";
      }
      this.beforeDrag.apply(this, [this.$el, this.$container, obj.element.getElementPoint(this.$el, this.$container), e]);
    });
    obj.event.on(this.$el, "touchmove.drag", (e) => {
      if (this.draggable) {
        if (!this.draggableX && !this.draggableY) {
          return;
        }
        if (e.cancelable) {
          e.preventDefault();
        }
        let left = e.targetTouches[0].pageX - this.pageX;
        let top = e.targetTouches[0].pageY - this.pageY;
        if (this.draggableX) {
          this.$el.style.left = left + "px";
          this.$el.style.right = "auto";
        }
        if (this.draggableY) {
          this.$el.style.top = top + "px";
          this.$el.style.bottom = "auto";
        }
        this.resize();
        if (this.draggableX || this.draggableY) {
          this.drag.apply(this, [this.$el, this.$container, obj.element.getElementPoint(this.$el, this.$container), e]);
        }
      }
    });
    obj.event.on(this.$el, "touchend.drag", (e) => {
      if (this.draggable) {
        if (!this.draggableX && !this.draggableY) {
          return;
        }
        this.draggable = false;
        if (this.cursor) {
          this.$el.style.cursor = "";
        }
        this.dragged.apply(this, [this.$el, this.$container, obj.element.getElementPoint(this.$el, this.$container), e]);
      }
    });
    obj.event.on(this.$el, "mousedown.drag", (e) => {
      if (!this.draggableX && !this.draggableY) {
        return;
      }
      this.pageX = e.pageX - obj.element.getElementPoint(this.$el, this.$container).left;
      this.pageY = e.pageY - obj.element.getElementPoint(this.$el, this.$container).top;
      this.draggable = true;
      if (this.cursor) {
        this.$el.style.cursor = "move";
      }
      this.beforeDrag.apply(this, [this.$el, this.$container, obj.element.getElementPoint(this.$el, this.$container), e]);
    });
    obj.event.on(document.documentElement, `mousemove.drag_${this.guid}`, (e) => {
      if (this.draggable) {
        if (!this.draggableX && !this.draggableY) {
          return;
        }
        let left = e.pageX - this.pageX;
        let top = e.pageY - this.pageY;
        if (this.draggableX) {
          this.$el.style.left = left + "px";
          this.$el.style.right = "auto";
        }
        if (this.draggableY) {
          this.$el.style.top = top + "px";
          this.$el.style.bottom = "auto";
        }
        this.resize();
        if (this.draggableX || this.draggableY) {
          this.drag.apply(this, [this.$el, this.$container, obj.element.getElementPoint(this.$el, this.$container), e]);
        }
      }
    });
    obj.event.on(document.documentElement, `mouseup.drag_${this.guid}`, (e) => {
      if (this.draggable) {
        if (!this.draggableX && !this.draggableY) {
          return;
        }
        this.draggable = false;
        if (this.cursor) {
          this.$el.style.cursor = "";
        }
        this.dragged.apply(this, [this.$el, this.$container, obj.element.getElementPoint(this.$el, this.$container), e]);
      }
    });
  }
  //元素超出容器范围设置
  resize() {
    if (this.mode == "in") {
      if (this.draggableX) {
        if (obj.element.getElementPoint(this.$el, this.$container).left <= 0) {
          this.$el.style.left = "0";
        }
        if (obj.element.getElementPoint(this.$el, this.$container).left >= this.$container.offsetWidth - this.$el.offsetWidth) {
          this.$el.style.left = this.$container.offsetWidth - this.$el.offsetWidth + "px";
        }
      }
      if (this.draggableY) {
        if (obj.element.getElementPoint(this.$el, this.$container).top <= 0) {
          this.$el.style.top = "0";
        }
        if (obj.element.getElementPoint(this.$el, this.$container).top >= this.$container.offsetHeight - this.$el.offsetHeight) {
          this.$el.style.top = this.$container.offsetHeight - this.$el.offsetHeight + "px";
        }
      }
    } else if (this.mode == "on") {
      if (this.draggableX) {
        if (obj.element.getElementPoint(this.$el, this.$container).left <= -this.$el.offsetWidth / 2) {
          this.$el.style.left = -this.$el.offsetWidth / 2 + "px";
        }
        if (obj.element.getElementPoint(this.$el, this.$container).left >= this.$container.offsetWidth - this.$el.offsetWidth / 2) {
          this.$el.style.left = this.$container.offsetWidth - this.$el.offsetWidth / 2 + "px";
        }
      }
      if (this.draggableY) {
        if (obj.element.getElementPoint(this.$el, this.$container).top <= -this.$el.offsetHeight / 2) {
          this.$el.style.top = -this.$el.offsetHeight / 2 + "px";
        }
        if (obj.element.getElementPoint(this.$el, this.$container).top >= this.$container.offsetHeight - this.$el.offsetHeight / 2) {
          this.$el.style.top = this.$container.offsetHeight - this.$el.offsetHeight / 2 + "px";
        }
      }
    } else if (this.mode == "out") {
      if (this.draggableX) {
        if (obj.element.getElementPoint(this.$el, this.$container).left <= -this.$el.offsetWidth) {
          this.$el.style.left = -this.$el.offsetWidth + "px";
        }
        if (obj.element.getElementPoint(this.$el, this.$container).left >= this.$container.offsetWidth) {
          this.$el.style.left = this.$container.offsetWidth + "px";
        }
      }
      if (this.draggableY) {
        if (obj.element.getElementPoint(this.$el, this.$container).top <= -this.$el.offsetHeight) {
          this.$el.style.top = -this.$el.offsetHeight + "px";
        }
        if (obj.element.getElementPoint(this.$el, this.$container).top >= this.$container.offsetHeight) {
          this.$el.style.top = this.$container.offsetHeight + "px";
        }
      }
    }
  }
  //生成唯一值
  createGuid() {
    let guid = obj.data.get(document.body, "mvi-directives-drag-guid") || 0;
    guid++;
    obj.data.set(document.body, "mvi-directives-drag-guid", guid);
    return guid;
  }
  //api：初始化
  init() {
    if (this.hasInit) {
      return;
    }
    this.hasInit = true;
    if (!obj.element.isElement(this.$el)) {
      throw new TypeError("The element that needs to be dragged is not a node element");
    }
    if (typeof this.$container == "string" && this.$container) {
      this.$container = document.body.querySelector(this.$container);
    }
    if (!obj.element.isElement(this.$container)) {
      this.$container = document.body;
    }
    if (!obj.element.isContains(this.$container, this.$el)) {
      throw new Error("Elements that need to be dragged are not descendants of container elements");
    }
    if (obj.element.getCssStyle(this.$container, "position") == "static" && this.$container != document.body) {
      throw new Error("The container element cannot be static positioning");
    }
    if (obj.element.getCssStyle(this.$el, "position") == "static" || obj.element.getCssStyle(this.$el, "position") == "relative") {
      throw new Error("The element that need to be dragged cannot be static and relative positioning");
    }
    if (typeof this.draggableY != "boolean") {
      this.draggableY = true;
    }
    if (typeof this.draggableX != "boolean") {
      this.draggableX = true;
    }
    if (this.mode != "on" && this.mode != "in" && this.mode != "over" && this.mode != "out") {
      this.mode = "";
    }
    if (typeof this.cursor != "boolean") {
      this.cursor = true;
    }
    if (typeof this.drag != "function") {
      this.drag = function() {
      };
    }
    if (typeof this.beforeDrag != "function") {
      this.beforeDrag = function() {
      };
    }
    if (typeof this.dragged != "function") {
      this.dragged = function() {
      };
    }
    if (typeof this.ready != "function") {
      this.ready = function() {
      };
    }
    this.setOn();
    this.ready.apply(this, [this]);
  }
  //api：移除该指令绑定在documentElement上的事件
  destroy() {
    obj.event.off(document.documentElement, `mousemove.drag_${this.guid} mouseup.drag_${this.guid}`);
  }
}
const Drag$1 = Drag;
const vDrag = withInstallDirective("drag", {
  mounted(el, binding) {
    const options = {};
    if (obj.common.isObject(binding.value)) {
      Object.assign(options, binding.value);
    }
    const drag = new Drag$1(el, options);
    drag.init();
    obj.data.set(el, "directive:drag", drag);
  },
  beforeUnmount(el) {
    const drag = obj.data.get(el, "directive:drag");
    if (drag) {
      drag.destroy();
    }
  }
});
class Observe {
  constructor(el, options) {
    //监听的元素
    __publicField(this, "$el");
    //是否监听元素属性变更
    __publicField(this, "attributes");
    //是否监听子节点变更
    __publicField(this, "childList");
    //监听子节点变动时是否监听其子孙后代节点变更
    __publicField(this, "subtree");
    //监听元素属性变更时定义监听的属性名称数组
    __publicField(this, "attributeNames");
    //属性变化触发的方法
    __publicField(this, "attributesChange");
    //子孙节点变化触发的方法
    __publicField(this, "childNodesChange");
    //是否已经初始化
    __publicField(this, "hasInit", false);
    //MutationObserver对象
    __publicField(this, "mutationObserver", null);
    this.$el = el;
    options = obj.common.isObject(options) ? options : {};
    this.attributes = options.attributes;
    this.childList = options.childList;
    this.subtree = options.subtree;
    this.attributeNames = options.attributeNames;
    this.attributesChange = options.attributesChange;
    this.childNodesChange = options.childNodesChange;
  }
  //api：初始化方法
  init() {
    if (this.hasInit) {
      return;
    }
    this.hasInit = true;
    if (!obj.element.isElement(this.$el)) {
      throw new TypeError("The element that needs to be observed is not a node element");
    }
    try {
      if (typeof this.attributes != "boolean") {
        this.attributes = false;
      }
      if (typeof this.childList != "boolean") {
        this.childList = false;
      }
      if (typeof this.subtree != "boolean") {
        this.subtree = false;
      }
      if (!(this.attributeNames instanceof Array)) {
        this.attributeNames = [];
      }
      if (typeof this.attributesChange != "function") {
        this.attributesChange = function() {
        };
      }
      if (typeof this.childNodesChange != "function") {
        this.childNodesChange = function() {
        };
      }
      let MutationObserver = window.MutationObserver;
      this.mutationObserver = new MutationObserver((mutationList) => {
        let length = mutationList.length;
        for (let i = 0; i < length; i++) {
          if (mutationList[i].type == "attributes" && this.attributes) {
            this.attributesChange.apply(this, [mutationList[i].target, mutationList[i].attributeName, mutationList[i].target.getAttribute(mutationList[i].attributeName), mutationList[i].oldValue]);
          } else if (mutationList[i].type == "childList" && this.childList) {
            for (let node of mutationList[i].addedNodes) {
              if (obj.element.isElement(node)) {
                this.childNodesChange.apply(this, [node, null]);
              }
            }
            for (let node of mutationList[i].removedNodes) {
              if (obj.element.isElement(node)) {
                this.childNodesChange.apply(this, [null, node]);
              }
            }
          }
        }
      });
      if (this.attributes) {
        if (this.attributeNames.length > 0) {
          this.mutationObserver.observe(this.$el, {
            attributes: this.attributes,
            attributeFilter: this.attributeNames,
            attributeOldValue: true,
            childList: this.childList,
            subtree: this.subtree
          });
        } else {
          this.mutationObserver.observe(this.$el, {
            attributes: this.attributes,
            attributeOldValue: true,
            childList: this.childList,
            subtree: this.subtree
          });
        }
      } else {
        this.mutationObserver.observe(this.$el, {
          attributes: this.attributes,
          childList: this.childList,
          subtree: this.subtree
        });
      }
    } catch (e) {
      throw new Error("Listening failed. Your browser may not support it, or childList and attributes are false, meaning there are no objects to listen on");
    }
  }
  //api：销毁方法
  destroy() {
    if (this.mutationObserver) {
      this.mutationObserver.disconnect();
    }
  }
}
const Observe$1 = Observe;
const vObserve = withInstallDirective("observe", {
  mounted(el, binding) {
    const options = {};
    if (obj.common.isObject(binding.value)) {
      Object.assign(options, binding.value);
    }
    const observe = new Observe$1(el, options);
    observe.init();
    obj.data.set(el, "directive:observe", observe);
  },
  beforeUnmount(el) {
    const observe = obj.data.get(el, "directive:observe");
    if (observe) {
      observe.destroy();
    }
  }
});
class Prop {
  constructor(element2, ratio) {
    //元素
    __publicField(this, "$el");
    //比率
    __publicField(this, "ratio");
    //元素宽度
    __publicField(this, "width", 0);
    //元素高度
    __publicField(this, "height", 0);
    //是否已经初始化
    __publicField(this, "hasInit", false);
    //生成唯一标识符
    __publicField(this, "guid", this.createGuid());
    this.$el = element2;
    this.ratio = ratio;
  }
  //生成唯一值
  createGuid() {
    let guid = obj.data.get(document.body, "mvi-directives-prop-guid") || 0;
    guid++;
    obj.data.set(document.body, "mvi-directives-prop-guid", guid);
    return guid;
  }
  //api：设置高度的方法
  set(number2) {
    if (typeof number2 == "number" && !isNaN(number2) && number2 >= 0) {
      this.ratio = number2;
    }
    this.width = Number(parseFloat(obj.element.getCssStyle(this.$el, "width")).toFixed(2));
    this.height = this.width * this.ratio;
    this.$el.style.height = this.height + "px";
  }
  //api：初始化
  init() {
    if (this.hasInit) {
      return;
    }
    this.hasInit = true;
    if (!obj.element.isElement(this.$el)) {
      throw new TypeError("The bound element is not a node element");
    }
    if (typeof this.ratio != "number" || isNaN(this.ratio)) {
      this.ratio = 0;
    }
    this.set();
    obj.event.on(window, `resize.prop_${this.guid}`, () => {
      this.set();
    });
  }
  //api：移除绑定在window的事件
  destroy() {
    obj.event.off(window, `resize.prop_${this.guid}`);
  }
}
const Prop$1 = Prop;
const vProp = withInstallDirective("prop", {
  mounted(el, binding) {
    const prop = new Prop$1(el, binding.value);
    prop.init();
    obj.data.set(el, "directive:prop", prop);
  },
  updated(el, binding) {
    const prop = obj.data.get(el, "directive:prop");
    if (prop) {
      prop.set(binding.value);
    }
  },
  beforeUnmount(el) {
    const prop = obj.data.get(el, "directive:prop");
    if (prop) {
      prop.destroy();
    }
  }
});
class Px {
  constructor(element2, options) {
    //指定的元素
    __publicField(this, "$el");
    //适配的样式名称
    __publicField(this, "attr");
    //是否after伪类
    __publicField(this, "isAfter");
    //是否before伪类
    __publicField(this, "isBefore");
    //是否已经初始化了
    __publicField(this, "hasInit", false);
    options = obj.common.isObject(options) ? options : {};
    this.$el = element2;
    this.attr = options.attr;
    this.isAfter = options.after;
    this.isBefore = options.before;
  }
  //执行适配
  handle() {
    let dpr = Math.round(window.devicePixelRatio || 1);
    let value = Number((1 / dpr).toFixed(2));
    if (this.isBefore || this.isAfter) {
      let guid = this.createGuid();
      let className = `mvi-directives-px_${guid}`;
      obj.element.addClass(this.$el, className);
      let style = document.createElement("style");
      if (this.isBefore) {
        style.innerHTML += ` .${className}::before {${this.attr}:${value}px !important;}`;
      }
      if (this.isAfter) {
        style.innerHTML += ` .${className}::after {${this.attr}:${value}px !important;}`;
      }
      document.querySelector("head").appendChild(style);
    } else {
      this.$el.style.setProperty(this.attr, value + "px", "important");
    }
  }
  //生成唯一值
  createGuid() {
    let guid = obj.data.get(document.body, "mvi-directives-px-guid") || 0;
    guid++;
    obj.data.set(document.body, "mvi-directives-px-guid", guid);
    return guid;
  }
  //api：初始化方法
  init() {
    if (this.hasInit) {
      return;
    }
    this.hasInit = true;
    if (!obj.element.isElement(this.$el)) {
      throw new TypeError("The bound element is not a node element");
    }
    if (typeof this.attr != "string" || !this.attr) {
      throw new Error("The attribute name is not set");
    }
    if (typeof this.isAfter != "boolean") {
      this.isAfter = false;
    }
    if (typeof this.isBefore != "boolean") {
      this.isBefore = false;
    }
    this.handle();
  }
}
const Px$1 = Px;
const vPx = withInstallDirective("px", {
  mounted(el, binding) {
    const options = {};
    if (obj.common.isObject(binding.value)) {
      Object.assign(options, binding.value);
    }
    if (obj.common.isObject(binding.modifiers)) {
      Object.assign(options, binding.modifiers);
    }
    if (binding.arg) {
      options.attr = binding.arg;
    }
    const px = new Px$1(el, options);
    px.init();
  }
});
const ResizeModeValue = {
  LEFT: true,
  TOP: true,
  BOTTOM: true,
  RIGHT: true
};
class Resize {
  constructor(element2, options) {
    //拖拽元素
    __publicField(this, "$el");
    //水平方向是否可拖拽
    __publicField(this, "draggableX");
    //垂直方向是否可拖拽
    __publicField(this, "draggableY");
    //拖拽模式
    __publicField(this, "mode");
    //元素大小改变之前触发
    __publicField(this, "beforeResize");
    //元素大小改变时触发
    __publicField(this, "resize");
    //按下触发时触发
    __publicField(this, "trigger");
    //大小改变之后
    __publicField(this, "end");
    //初始化完成回调
    __publicField(this, "ready");
    //可拖动的范围直径
    __publicField(this, "range");
    //是否可拖动的标识
    __publicField(this, "draggable", false);
    //左侧可拖动范围
    __publicField(this, "leftRange", {});
    //右侧可拖动范围
    __publicField(this, "rightRange", {});
    //顶部可拖动范围
    __publicField(this, "topRange", {});
    //底部可拖动范围
    __publicField(this, "bottomRange", {});
    //左上可拖动范围
    __publicField(this, "leftTopRange", {});
    //右上可拖动范围
    __publicField(this, "rightTopRange", {});
    //左下可拖动范围
    __publicField(this, "leftBottomRange", {});
    //右下可拖动范围
    __publicField(this, "rightBottomRange", {});
    //水平开始的位置
    __publicField(this, "startX", 0);
    //垂直开始的位置
    __publicField(this, "startY", 0);
    //元素宽度
    __publicField(this, "_width", 0);
    //元素高度
    __publicField(this, "_height", 0);
    //元素left
    __publicField(this, "_left", 0);
    //元素top
    __publicField(this, "_top", 0);
    //是否初始化
    __publicField(this, "hasInit", false);
    //记录原先的鼠标样式
    __publicField(this, "cursor", "");
    //生成唯一标识符
    __publicField(this, "guid", this.createGuid());
    options = obj.common.isObject(options) ? options : {};
    this.$el = element2;
    this.draggableX = options.draggableX;
    this.draggableY = options.draggableY;
    this.mode = options.mode;
    this.beforeResize = options.beforeResize;
    this.resize = options.resize;
    this.trigger = options.trigger;
    this.end = options.end;
    this.ready = options.ready;
    this.range = options.range;
  }
  ///判断点击的点是否在指定区域范围内
  getIsInRange(x, y, range) {
    let conditions1 = x >= range.x[0] && x <= range.x[1];
    let conditions2 = y >= range.y[0] && y <= range.y[1];
    if (conditions1 && conditions2) {
      return true;
    }
    return false;
  }
  //移动端触摸按下或者PC端鼠标按下
  down(e) {
    this._width = this.$el.offsetWidth;
    this._height = this.$el.offsetHeight;
    this._left = this.$el.offsetLeft;
    this._top = this.$el.offsetTop;
    this.cursor = obj.element.getCssStyle(this.$el, "cursor");
    if (this.draggableX && this.draggableY) {
      if (this.getIsInRange(this.startX, this.startY, this.leftTopRange)) {
        if (this.mode.left || this.mode.top) {
          this.draggable = true;
          this.$el.style.cursor = "nw-resize";
          this.trigger.apply(this, [
            {
              event: e,
              area: "left-top"
              /* LEFTTOP */
            }
          ]);
        }
      } else if (this.getIsInRange(this.startX, this.startY, this.leftBottomRange)) {
        if (this.mode.left || this.mode.bottom) {
          this.draggable = true;
          this.$el.style.cursor = "sw-resize";
          this.trigger.apply(this, [
            {
              event: e,
              area: "left-bottom"
              /* LEFTBOTTOM */
            }
          ]);
        }
      } else if (this.getIsInRange(this.startX, this.startY, this.rightTopRange)) {
        if (this.mode.right || this.mode.top) {
          this.draggable = true;
          this.$el.style.cursor = "ne-resize";
          this.trigger.apply(this, [
            {
              event: e,
              area: "right-top"
              /* RIGHTTOP */
            }
          ]);
        }
      } else if (this.getIsInRange(this.startX, this.startY, this.rightBottomRange)) {
        if (this.mode.right || this.mode.bottom) {
          this.draggable = true;
          this.$el.style.cursor = "se-resize";
          this.trigger.apply(this, [
            {
              event: e,
              area: "right-bottom"
              /* RIGHTBOTTOM */
            }
          ]);
        }
      } else if (this.getIsInRange(this.startX, this.startY, this.leftRange)) {
        if (this.mode.left) {
          this.draggable = true;
          this.$el.style.cursor = "w-resize";
          this.trigger.apply(this, [
            {
              event: e,
              area: "left"
              /* LEFT */
            }
          ]);
        }
      } else if (this.getIsInRange(this.startX, this.startY, this.rightRange)) {
        if (this.mode.right) {
          this.draggable = true;
          this.$el.style.cursor = "e-resize";
          this.trigger.apply(this, [
            {
              event: e,
              area: "right"
              /* RIGHT */
            }
          ]);
        }
      } else if (this.getIsInRange(this.startX, this.startY, this.topRange)) {
        if (this.mode.top) {
          this.draggable = true;
          this.$el.style.cursor = "n-resize";
          this.trigger.apply(this, [
            {
              event: e,
              area: "top"
              /* TOP */
            }
          ]);
        }
      } else if (this.getIsInRange(this.startX, this.startY, this.bottomRange)) {
        if (this.mode.bottom) {
          this.draggable = true;
          this.$el.style.cursor = "s-resize";
          this.trigger.apply(this, [
            {
              event: e,
              area: "bottom"
              /* BOTTOM */
            }
          ]);
        }
      }
    } else if (this.draggableX) {
      if (this.getIsInRange(this.startX, this.startY, this.leftRange)) {
        if (this.mode.left) {
          this.draggable = true;
          this.$el.style.cursor = "w-resize";
          this.trigger.apply(this, [
            {
              event: e,
              area: "left"
              /* LEFT */
            }
          ]);
        }
      } else if (this.getIsInRange(this.startX, this.startY, this.rightRange)) {
        if (this.mode.right) {
          this.draggable = true;
          this.$el.style.cursor = "e-resize";
          this.trigger.apply(this, [
            {
              event: e,
              area: "right"
              /* RIGHT */
            }
          ]);
        }
      }
    } else if (this.draggableY) {
      if (this.getIsInRange(this.startX, this.startY, this.topRange)) {
        if (this.mode.top) {
          this.draggable = true;
          this.$el.style.cursor = "n-resize";
          this.trigger.apply(this, [
            {
              event: e,
              area: "top"
              /* TOP */
            }
          ]);
        }
      } else if (this.getIsInRange(this.startX, this.startY, this.bottomRange)) {
        if (this.mode.bottom) {
          this.draggable = true;
          this.$el.style.cursor = "s-resize";
          this.trigger.apply(this, [
            {
              event: e,
              area: "bottom"
              /* BOTTOM */
            }
          ]);
        }
      }
    }
  }
  //移动端触摸滑动或者PC端鼠标拖动
  move(e, endX, endY) {
    if (this.draggable) {
      let moveX = endX - this.startX;
      let moveY = endY - this.startY;
      if (this.draggableX && this.draggableY) {
        if (this.getIsInRange(this.startX, this.startY, this.leftTopRange)) {
          if (this.mode.left || this.mode.top) {
            if (this.beforeResize.apply(this, [
              {
                event: e,
                area: "left-top",
                width: this.$el.offsetWidth,
                height: this.$el.offsetHeight,
                moveX,
                moveY
              }
            ]) === false) {
              return;
            }
          }
          if (this.mode.left) {
            this.$el.style.width = this._width - moveX + "px";
            this.$el.style.left = this._left + moveX + "px";
          }
          if (this.mode.top) {
            this.$el.style.height = this._height - moveY + "px";
            this.$el.style.top = this._top + moveY + "px";
          }
          if (this.mode.left || this.mode.top) {
            this.resize.apply(this, [
              {
                area: "left-top",
                event: e,
                width: this.$el.offsetWidth,
                height: this.$el.offsetHeight,
                moveX,
                moveY
              }
            ]);
          }
        } else if (this.getIsInRange(this.startX, this.startY, this.leftBottomRange)) {
          if (this.mode.left || this.mode.bottom) {
            if (this.beforeResize.apply(this, [
              {
                area: "left-bottom",
                event: e,
                width: this.$el.offsetWidth,
                height: this.$el.offsetHeight,
                moveX,
                moveY
              }
            ]) === false) {
              return;
            }
          }
          if (this.mode.left) {
            this.$el.style.width = this._width - moveX + "px";
            this.$el.style.left = this._left + moveX + "px";
          }
          if (this.mode.bottom) {
            this.$el.style.height = this._height + moveY + "px";
          }
          if (this.mode.left || this.mode.bottom) {
            this.resize.apply(this, [
              {
                area: "left-bottom",
                event: e,
                width: this.$el.offsetWidth,
                height: this.$el.offsetHeight,
                moveX,
                moveY
              }
            ]);
          }
        } else if (this.getIsInRange(this.startX, this.startY, this.rightTopRange)) {
          if (this.mode.right || this.mode.top) {
            if (this.beforeResize.apply(this, [
              {
                area: "right-top",
                event: e,
                width: this.$el.offsetWidth,
                height: this.$el.offsetHeight,
                moveX,
                moveY
              }
            ]) === false) {
              return;
            }
          }
          if (this.mode.right) {
            this.$el.style.width = this._width + moveX + "px";
          }
          if (this.mode.top) {
            this.$el.style.height = this._height - moveY + "px";
            this.$el.style.top = this._top + moveY + "px";
          }
          if (this.mode.top || this.mode.right) {
            this.resize.apply(this, [
              {
                area: "right-top",
                event: e,
                width: this.$el.offsetWidth,
                height: this.$el.offsetHeight,
                moveX,
                moveY
              }
            ]);
          }
        } else if (this.getIsInRange(this.startX, this.startY, this.rightBottomRange)) {
          if (this.mode.right || this.mode.bottom) {
            if (this.beforeResize.apply(this, [
              {
                area: "right-bottom",
                event: e,
                width: this.$el.offsetWidth,
                height: this.$el.offsetHeight,
                moveX,
                moveY
              }
            ]) === false) {
              return;
            }
          }
          if (this.mode.right) {
            this.$el.style.width = this._width + moveX + "px";
          }
          if (this.mode.bottom) {
            this.$el.style.height = this._height + moveY + "px";
          }
          if (this.mode.right || this.mode.bottom) {
            this.resize.apply(this, [
              {
                area: "right-bottom",
                event: e,
                width: this.$el.offsetWidth,
                height: this.$el.offsetHeight,
                moveX,
                moveY
              }
            ]);
          }
        } else if (this.getIsInRange(this.startX, this.startY, this.leftRange)) {
          if (this.mode.left) {
            if (this.beforeResize.apply(this, [
              {
                area: "left",
                event: e,
                width: this.$el.offsetWidth,
                height: this.$el.offsetHeight,
                moveX,
                moveY
              }
            ]) === false) {
              return;
            }
            this.$el.style.width = this._width - moveX + "px";
            this.$el.style.left = this._left + moveX + "px";
            this.resize.apply(this, [
              {
                area: "left",
                event: e,
                width: this.$el.offsetWidth,
                height: this.$el.offsetHeight,
                moveX,
                moveY
              }
            ]);
          }
        } else if (this.getIsInRange(this.startX, this.startY, this.rightRange)) {
          if (this.mode.right) {
            if (this.beforeResize.apply(this, [
              {
                area: "right",
                event: e,
                width: this.$el.offsetWidth,
                height: this.$el.offsetHeight,
                moveX,
                moveY
              }
            ]) === false) {
              return;
            }
            this.$el.style.width = this._width + moveX + "px";
            this.resize.apply(this, [
              {
                area: "right",
                event: e,
                width: this.$el.offsetWidth,
                height: this.$el.offsetHeight,
                moveX,
                moveY
              }
            ]);
          }
        } else if (this.getIsInRange(this.startX, this.startY, this.topRange)) {
          if (this.mode.top) {
            if (this.beforeResize.apply(this, [
              {
                area: "top",
                event: e,
                width: this.$el.offsetWidth,
                height: this.$el.offsetHeight,
                moveX,
                moveY
              }
            ]) === false) {
              return;
            }
            this.$el.style.height = this._height - moveY + "px";
            this.$el.style.top = this._top + moveY + "px";
            this.resize.apply(this, [
              {
                area: "top",
                event: e,
                width: this.$el.offsetWidth,
                height: this.$el.offsetHeight,
                moveX,
                moveY
              }
            ]);
          }
        } else if (this.getIsInRange(this.startX, this.startY, this.bottomRange)) {
          if (this.mode.bottom) {
            if (this.beforeResize.apply(this, [
              {
                area: "bottom",
                event: e,
                width: this.$el.offsetWidth,
                height: this.$el.offsetHeight,
                moveX,
                moveY
              }
            ]) === false) {
              return;
            }
            this.$el.style.height = this._height + moveY + "px";
            this.resize.apply(this, [
              {
                area: "bottom",
                event: e,
                width: this.$el.offsetWidth,
                height: this.$el.offsetHeight,
                moveX,
                moveY
              }
            ]);
          }
        }
      } else if (this.draggableX) {
        if (this.getIsInRange(this.startX, this.startY, this.leftRange)) {
          if (this.mode.left) {
            if (this.beforeResize.apply(this, [
              {
                area: "left",
                event: e,
                width: this.$el.offsetWidth,
                height: this.$el.offsetHeight,
                moveX,
                moveY
              }
            ]) === false) {
              return;
            }
            this.$el.style.width = this._width - moveX + "px";
            this.$el.style.left = this._left + moveX + "px";
            this.resize.apply(this, [
              {
                area: "left",
                event: e,
                width: this.$el.offsetWidth,
                height: this.$el.offsetHeight,
                moveX,
                moveY
              }
            ]);
          }
        } else if (this.getIsInRange(this.startX, this.startY, this.rightRange)) {
          if (this.mode.right) {
            if (this.beforeResize.apply(this, [
              {
                area: "right",
                event: e,
                width: this.$el.offsetWidth,
                height: this.$el.offsetHeight,
                moveX,
                moveY
              }
            ]) === false) {
              return;
            }
            this.$el.style.width = this._width + moveX + "px";
            this.resize.apply(this, [
              {
                area: "right",
                event: e,
                width: this.$el.offsetWidth,
                height: this.$el.offsetHeight,
                moveX,
                moveY
              }
            ]);
          }
        }
      } else if (this.draggableY) {
        if (this.getIsInRange(this.startX, this.startY, this.topRange)) {
          if (this.mode.top) {
            if (this.beforeResize.apply(this, [
              {
                area: "top",
                event: e,
                width: this.$el.offsetWidth,
                height: this.$el.offsetHeight,
                moveX,
                moveY
              }
            ]) === false) {
              return;
            }
            this.$el.style.height = this._height - moveY + "px";
            this.$el.style.top = this._top + moveY + "px";
            this.resize.apply(this, [
              {
                area: "top",
                event: e,
                width: this.$el.offsetWidth,
                height: this.$el.offsetHeight,
                moveX,
                moveY
              }
            ]);
          }
        } else if (this.getIsInRange(this.startX, this.startY, this.bottomRange)) {
          if (this.mode.bottom) {
            if (this.beforeResize.apply(this, [
              {
                area: "bottom",
                event: e,
                width: this.$el.offsetWidth,
                height: this.$el.offsetHeight,
                moveX,
                moveY
              }
            ]) === false) {
              return;
            }
            this.$el.style.height = this._height + moveY + "px";
            this.resize.apply(this, [
              {
                area: "bottom",
                event: e,
                width: this.$el.offsetWidth,
                height: this.$el.offsetHeight,
                moveX,
                moveY
              }
            ]);
          }
        }
      }
    }
  }
  //移动端触摸松开或者PC端鼠标松开
  leave(e) {
    if (this.draggable) {
      this.$el.style.cursor = this.cursor;
      this.draggable = false;
      if (this.draggableX && this.draggableY) {
        if (this.getIsInRange(this.startX, this.startY, this.leftTopRange)) {
          this.end.apply(this, [
            {
              event: e,
              area: "left-top"
              /* LEFTTOP */
            }
          ]);
        } else if (this.getIsInRange(this.startX, this.startY, this.leftBottomRange)) {
          this.end.apply(this, [
            {
              event: e,
              area: "left-bottom"
              /* LEFTBOTTOM */
            }
          ]);
        } else if (this.getIsInRange(this.startX, this.startY, this.rightTopRange)) {
          this.end.apply(this, [
            {
              event: e,
              area: "right-top"
              /* RIGHTTOP */
            }
          ]);
        } else if (this.getIsInRange(this.startX, this.startY, this.rightBottomRange)) {
          this.end.apply(this, [
            {
              event: e,
              area: "right-bottom"
              /* RIGHTBOTTOM */
            }
          ]);
        } else if (this.getIsInRange(this.startX, this.startY, this.leftRange)) {
          this.end.apply(this, [
            {
              event: e,
              area: "left"
              /* LEFT */
            }
          ]);
        } else if (this.getIsInRange(this.startX, this.startY, this.rightRange)) {
          this.end.apply(this, [
            {
              event: e,
              area: "right"
              /* RIGHT */
            }
          ]);
        } else if (this.getIsInRange(this.startX, this.startY, this.topRange)) {
          this.end.apply(this, [
            {
              event: e,
              area: "top"
              /* TOP */
            }
          ]);
        } else if (this.getIsInRange(this.startX, this.startY, this.bottomRange)) {
          this.end.apply(this, [
            {
              event: e,
              area: "bottom"
              /* BOTTOM */
            }
          ]);
        }
      } else if (this.draggableX) {
        if (this.getIsInRange(this.startX, this.startY, this.leftRange)) {
          this.end.apply(this, [
            {
              event: e,
              area: "left"
              /* LEFT */
            }
          ]);
        } else if (this.getIsInRange(this.startX, this.startY, this.rightRange)) {
          this.end.apply(this, [
            {
              event: e,
              area: "right"
              /* RIGHT */
            }
          ]);
        }
      } else if (this.draggableY) {
        if (this.getIsInRange(this.startX, this.startY, this.topRange)) {
          this.end.apply(this, [
            {
              event: e,
              area: "top"
              /* TOP */
            }
          ]);
        } else if (this.getIsInRange(this.startX, this.startY, this.bottomRange)) {
          this.end.apply(this, [
            {
              event: e,
              area: "bottom"
              /* BOTTOM */
            }
          ]);
        }
      }
      this.setRange();
    }
  }
  //设置拖动事件
  setOn() {
    obj.event.on(this.$el, "touchstart.resize", (e) => {
      this.startX = e.targetTouches[0].pageX;
      this.startY = e.targetTouches[0].pageY;
      this.down(e);
    });
    obj.event.on(this.$el, "touchmove.resize", (e) => {
      if (e.cancelable) {
        e.preventDefault();
      }
      let endX = e.targetTouches[0].pageX;
      let endY = e.targetTouches[0].pageY;
      this.move(e, endX, endY);
    });
    obj.event.on(this.$el, "touchend.resize", (e) => {
      this.leave(e);
    });
    obj.event.on(this.$el, "mousedown.resize", (e) => {
      this.startX = e.pageX;
      this.startY = e.pageY;
      this.down(e);
    });
    obj.event.on(document.documentElement, `mousemove.resize_${this.guid}`, (e) => {
      let endX = e.pageX;
      let endY = e.pageY;
      this.move(e, endX, endY);
    });
    obj.event.on(document.documentElement, `mouseup.resize_${this.guid}`, (e) => {
      this.leave(e);
    });
  }
  //生成唯一值
  createGuid() {
    let guid = obj.data.get(document.body, "mvi-directives-resize-guid") || 0;
    guid++;
    obj.data.set(document.body, "mvi-directives-resize-guid", guid);
    return guid;
  }
  //api：初始化
  init() {
    if (this.hasInit) {
      return;
    }
    this.hasInit = true;
    if (!obj.element.isElement(this.$el)) {
      throw new TypeError("The element that needs to be resized is not a node element");
    }
    if (typeof this.draggableX != "boolean") {
      this.draggableX = true;
    }
    if (typeof this.draggableY != "boolean") {
      this.draggableY = true;
    }
    if (!obj.common.isObject(this.mode)) {
      this.mode = {
        left: ResizeModeValue.LEFT,
        top: ResizeModeValue.TOP,
        bottom: ResizeModeValue.BOTTOM,
        right: ResizeModeValue.RIGHT
      };
    } else {
      if (typeof this.mode.left != "boolean") {
        this.mode.left = ResizeModeValue.LEFT;
      }
      if (typeof this.mode.top != "boolean") {
        this.mode.top = ResizeModeValue.TOP;
      }
      if (typeof this.mode.bottom != "boolean") {
        this.mode.bottom = ResizeModeValue.BOTTOM;
      }
      if (typeof this.mode.right != "boolean") {
        this.mode.right = ResizeModeValue.RIGHT;
      }
    }
    if (typeof this.beforeResize != "function") {
      this.beforeResize = () => {
        return true;
      };
    }
    if (typeof this.resize != "function") {
      this.resize = function() {
      };
    }
    if (typeof this.trigger != "function") {
      this.trigger = function() {
      };
    }
    if (typeof this.end != "function") {
      this.end = function() {
      };
    }
    if (typeof this.ready != "function") {
      this.ready = function() {
      };
    }
    if (!obj.number.isNumber(this.range)) {
      this.range = 0.4;
    }
    this.setRange();
    this.setOn();
    this.ready.apply(this, [this]);
  }
  //api：设置可拖动的范围
  setRange() {
    let range = this.$el.getBoundingClientRect();
    if (this.draggableX && this.draggableY) {
      this.leftRange = {
        x: [range.left, range.left + obj.element.rem2px(this.range)],
        y: [range.top + obj.element.rem2px(this.range), range.bottom - obj.element.rem2px(this.range)]
      };
      this.rightRange = {
        x: [range.right - obj.element.rem2px(this.range), range.right],
        y: [range.top + obj.element.rem2px(this.range), range.bottom - obj.element.rem2px(this.range)]
      };
      this.topRange = {
        x: [range.left + obj.element.rem2px(this.range), range.right - obj.element.rem2px(this.range)],
        y: [range.top, range.top + obj.element.rem2px(this.range)]
      };
      this.bottomRange = {
        x: [range.left + obj.element.rem2px(this.range), range.right - obj.element.rem2px(this.range)],
        y: [range.bottom - obj.element.rem2px(this.range), range.bottom]
      };
      this.leftTopRange = {
        x: [range.left, range.left + obj.element.rem2px(this.range)],
        y: [range.top, range.top + obj.element.rem2px(this.range)]
      };
      this.leftBottomRange = {
        x: [range.left, range.left + obj.element.rem2px(this.range)],
        y: [range.bottom - obj.element.rem2px(this.range), range.bottom]
      };
      this.rightTopRange = {
        x: [range.right - obj.element.rem2px(this.range), range.right],
        y: [range.top, range.top + obj.element.rem2px(this.range)]
      };
      this.rightBottomRange = {
        x: [range.right - obj.element.rem2px(this.range), range.right],
        y: [range.bottom - obj.element.rem2px(this.range), range.bottom]
      };
    } else if (this.draggableX) {
      this.leftRange = {
        x: [range.left, range.left + obj.element.rem2px(this.range)],
        y: [range.top, range.bottom]
      };
      this.rightRange = {
        x: [range.right - obj.element.rem2px(this.range), range.right],
        y: [range.top, range.bottom]
      };
    } else if (this.draggableY) {
      this.topRange = {
        x: [range.left, range.right],
        y: [range.top, range.top + obj.element.rem2px(this.range)]
      };
      this.bottomRange = {
        x: [range.left, range.right],
        y: [range.bottom - obj.element.rem2px(this.range), range.bottom]
      };
    }
  }
  //api：移除documentElement上的拖动事件
  destroy() {
    obj.event.off(document.documentElement, `mousemove.resize_${this.guid} mouseup.resize_${this.guid}`);
  }
  //api：设置水平方向不可拖拽改变大小
  disabledDragX() {
    this.draggableX = false;
    this.setRange();
  }
  //api：设置垂直方向不可拖拽改变大小
  disabledDragY() {
    this.draggableY = false;
    this.setRange();
  }
  //api：设置水平方向可拖拽改变大小
  enabledDragX() {
    this.draggableX = true;
    this.setRange();
  }
  //api：设置垂直方向可拖拽改变大小
  enabledDragY() {
    this.draggableY = true;
    this.setRange();
  }
}
const Resize$1 = Resize;
const vResize = withInstallDirective("resize", {
  mounted(el, binding) {
    const options = {};
    if (obj.common.isObject(binding.value)) {
      Object.assign(options, binding.value);
    }
    const resize = new Resize$1(el, options);
    resize.init();
    obj.data.set(el, "directive:resize", resize);
  },
  beforeUnmount(el) {
    const resize = obj.data.get(el, "directive:resize");
    if (resize) {
      resize.destroy();
    }
  }
});
class Ripple {
  constructor(element2, options) {
    //指定的元素
    __publicField(this, "$el");
    //水波纹颜色
    __publicField(this, "color");
    //水波持续时间，单位ms
    __publicField(this, "duration");
    //结束交互效果透明度大小
    __publicField(this, "finalOpacity");
    //初始交互效果透明度大小
    __publicField(this, "initialOpacity");
    //延迟时间
    __publicField(this, "delay");
    //是否禁用
    __publicField(this, "disabled");
    //是否初始化了
    __publicField(this, "hasInit", false);
    //初始化的color
    __publicField(this, "initColor", "");
    //observe对象
    __publicField(this, "observe", null);
    //是否支持touch事件
    __publicField(this, "isSupportTouch", false);
    //生成唯一值
    __publicField(this, "guid", this.createGuid());
    //水波纹容器数组
    __publicField(this, "rippleContainers", []);
    options = obj.common.isObject(options) ? options : {};
    this.$el = element2;
    this.color = options.color;
    this.duration = options.duration;
    this.finalOpacity = options.finalOpacity;
    this.initialOpacity = options.initialOpacity;
    this.delay = options.delay;
    this.disabled = options.disabled;
  }
  //动画完成处理
  endDeal(rippleContainer) {
    const rippleUp = obj.data.get(rippleContainer, "ripple-up");
    const rippleAnimationEnd = obj.data.get(rippleContainer, "ripple-animation-end");
    if (rippleUp && rippleAnimationEnd) {
      const destroyDuration = 100;
      const rippleEls = obj.element.children(rippleContainer);
      const rippleEl = rippleEls[0];
      rippleEl.style.transition = `opacity ${destroyDuration}ms ease-in-out`;
      rippleEl.offsetWidth;
      rippleEl.style.opacity = "0";
      setTimeout(() => {
        this.rippleContainers = this.rippleContainers.filter((el) => {
          return el != rippleContainer;
        });
        rippleContainer.remove();
      }, destroyDuration);
    }
  }
  //创建ripple元素
  createRippleElement(pageX, pageY) {
    const rect = obj.element.getElementBounding(this.$el);
    const { x1, y1, r } = this.getRadius(pageX, pageY, rect);
    const el = obj.element.string2dom("<div></div>");
    el.style.width = r * 2 + "px";
    el.style.height = r * 2 + "px";
    el.style.position = "absolute";
    el.style.background = this.color || "";
    el.style.top = y1 - r + "px";
    el.style.left = x1 - r + "px";
    el.style.zIndex = "1";
    el.style.borderRadius = "50%";
    el.style.transform = "scale(0)";
    el.style.opacity = this.initialOpacity + "";
    el.style.transition = `transform ${this.duration}ms cubic-bezier(0, 0.5, 0.25, 1), opacity ${this.duration}ms cubic-bezier(0.0, 0, 0.2, 1)`;
    return el;
  }
  //创建ripple父容器
  createRippleContainer() {
    const el = obj.element.string2dom("<div></div>");
    el.style.position = "absolute";
    el.style.left = "0px";
    el.style.top = "0px";
    el.style.width = obj.element.getCssStyle(this.$el, "width");
    el.style.height = obj.element.getCssStyle(this.$el, "height");
    el.style.background = "transparent";
    el.style.borderRadius = obj.element.getCssStyle(this.$el, "border-radius");
    el.style.overflow = "hidden";
    el.style.pointerEvents = "none";
    return el;
  }
  //获取圆半径
  getRadius(pageX, pageY, rect) {
    const x1 = pageX - rect.left;
    const y1 = pageY - rect.top;
    const x2 = this.$el.offsetWidth - x1;
    const y2 = this.$el.offsetHeight - y1;
    const topLeft = Math.sqrt(x1 * x1 + y1 * y1);
    const topRight = Math.sqrt(x2 * x2 + y1 * y1);
    const bottomLeft = Math.sqrt(x1 * x1 + y2 * y2);
    const bottomRight = Math.sqrt(x2 * x2 + y2 * y2);
    return {
      r: Math.round(Math.max(topLeft, topRight, bottomLeft, bottomRight)),
      x1,
      x2,
      y1,
      y2
    };
  }
  //生成唯一值
  createGuid() {
    let guid = obj.data.get(document.documentElement, "mvi-directives-ripple-guid") || 0;
    guid++;
    obj.data.set(document.documentElement, "mvi-directives-ripple-guid", guid);
    return guid;
  }
  //api：初始化
  init() {
    if (this.hasInit) {
      return;
    }
    this.initColor = this.color;
    this.hasInit = true;
    if (!obj.element.isElement(this.$el)) {
      throw new TypeError("The bound element is not a node element");
    }
    if (typeof this.color != "string") {
      this.color = isDark() ? "#8b8b8b" : "#9f9f9f";
    }
    if (!obj.number.isNumber(this.duration)) {
      this.duration = 600;
    }
    if (!obj.number.isNumber(this.finalOpacity)) {
      this.finalOpacity = 0.1;
    }
    if (!obj.number.isNumber(this.initialOpacity)) {
      this.initialOpacity = 0.1;
    }
    if (!obj.number.isNumber(this.delay)) {
      this.delay = 80;
    }
    if (typeof this.disabled != "boolean") {
      this.disabled = false;
    }
    if (obj.element.getCssStyle(this.$el, "position") != "relative" && obj.element.getCssStyle(this.$el, "position") != "absolute" && obj.element.getCssStyle(this.$el, "position") != "fixed") {
      this.$el.style.position = "relative";
    }
    this.observe = new Observe$1(document.documentElement, {
      attributes: true,
      childList: false,
      subtree: false,
      attributeNames: ["data-mvi-dark"],
      attributesChange: () => {
        if (!this.initColor) {
          this.color = isDark() ? "#8b8b8b" : "#9f9f9f";
        }
      }
    });
    this.observe.init();
    const downFn = (pageX, pageY) => {
      if (this.disabled) {
        return;
      }
      const rippleContainer = this.createRippleContainer();
      const rippleEl = this.createRippleElement(pageX, pageY);
      this.$el.appendChild(rippleContainer);
      rippleContainer.appendChild(rippleEl);
      this.rippleContainers.push(rippleContainer);
      setTimeout(() => {
        rippleEl.style.transform = "scale(1)";
        rippleEl.style.opacity = this.finalOpacity + "";
        setTimeout(() => {
          obj.data.set(rippleContainer, "ripple-animation-end", true);
          this.endDeal(rippleContainer);
        }, this.duration);
      }, this.delay);
    };
    const upFn = () => {
      if (this.rippleContainers.length) {
        this.rippleContainers.forEach((rippleContainer) => {
          obj.data.set(rippleContainer, "ripple-up", true);
          this.endDeal(rippleContainer);
        });
      }
    };
    obj.event.on(this.$el, "mousedown.ripple", (e) => {
      if (this.isSupportTouch) {
        return;
      }
      downFn(e.pageX, e.pageY);
    });
    obj.event.on(document.documentElement, `mouseup.ripple_${this.guid}`, () => {
      if (this.isSupportTouch) {
        this.isSupportTouch = false;
        return;
      }
      upFn();
    });
    obj.event.on(this.$el, "touchstart.ripple", (e) => {
      this.isSupportTouch = true;
      downFn(e.targetTouches[0].pageX, e.targetTouches[0].pageY);
    });
    obj.event.on(this.$el, `touchend.ripple`, upFn);
  }
  //api：销毁
  destroy() {
    var _a;
    (_a = this.observe) == null ? void 0 : _a.destroy();
    obj.event.off(document.documentElement, `mouseup.ripple_${this.guid}`);
  }
}
const Ripple$1 = Ripple;
const vRipple = withInstallDirective("ripple", {
  mounted(el, binding) {
    const options = {};
    if (obj.common.isObject(binding.value)) {
      Object.assign(options, binding.value);
    }
    const ripple = new Ripple$1(el, options);
    ripple.init();
    obj.data.set(el, "directive:ripple", ripple);
  },
  beforeUnmount(el) {
    const ripple = obj.data.get(el, "directive:ripple");
    if (ripple) {
      ripple.destroy();
    }
  }
});
class Scroll {
  constructor(element2, options) {
    //滚动元素
    __publicField(this, "$el");
    //到达顶部触发函数
    __publicField(this, "top");
    //到达底部触发函数
    __publicField(this, "bottom");
    //是否已经初始化
    __publicField(this, "hasInit", false);
    options = obj.common.isObject(options) ? options : {};
    this.$el = element2;
    this.top = options.top;
    this.bottom = options.bottom;
  }
  //api：初始化
  init() {
    if (this.hasInit) {
      return;
    }
    this.hasInit = true;
    if (!obj.element.isElement(this.$el)) {
      this.$el = window;
    }
    if (typeof this.top != "function") {
      this.top = function() {
      };
    }
    if (typeof this.bottom != "function") {
      this.bottom = function() {
      };
    }
    obj.element.scrollTopBottomTrigger(this.$el, (res) => {
      if (res.state == "top") {
        this.top.apply(this, [res.target]);
      } else {
        this.bottom.apply(this, [res.target]);
      }
    });
  }
}
const Scroll$1 = Scroll;
const vScroll = withInstallDirective("scroll", {
  mounted(el, binding) {
    const options = {};
    if (obj.common.isObject(binding.value)) {
      Object.assign(options, binding.value);
    }
    const scroll = new Scroll$1(el, options);
    scroll.init();
  }
});
class Spy {
  constructor(element2, options) {
    //绑定的元素
    __publicField(this, "$el");
    //滚动容器
    __publicField(this, "$root");
    //元素进入容器视图之前
    __publicField(this, "beforeEnter");
    //元素完全进入容器视图时
    __publicField(this, "enter");
    //元素离开容器视图之前
    __publicField(this, "beforeLeave");
    //元素完全离开容器视图时
    __publicField(this, "leave");
    //是否已经初始化
    __publicField(this, "hasInit", false);
    //是否触发的标记
    __publicField(this, "triggerTag", {
      before: false,
      after: false
    });
    //生成唯一标识符
    __publicField(this, "guid", this.createGuid());
    options = obj.common.isObject(options) ? options : {};
    this.$el = element2;
    this.$root = options.el;
    this.beforeEnter = options.beforeEnter;
    this.enter = options.enter;
    this.beforeLeave = options.beforeLeave;
    this.leave = options.leave;
  }
  //侦听处理
  scrollHandle() {
    const elRect = this.$el.getBoundingClientRect();
    const rootRect = this.$root.getBoundingClientRect();
    if (elRect.right >= rootRect.left && elRect.left <= rootRect.right && elRect.bottom >= rootRect.top && elRect.top <= rootRect.bottom) {
      if (!this.triggerTag.before) {
        this.beforeEnter.apply(this, [this.$el]);
        this.triggerTag.before = true;
      }
    } else {
      if (this.triggerTag.before) {
        this.leave.apply(this, [this.$el]);
        this.triggerTag.before = false;
      }
    }
    if (elRect.left >= rootRect.left && elRect.right <= rootRect.right && elRect.top >= rootRect.top && elRect.bottom <= rootRect.bottom) {
      if (!this.triggerTag.after) {
        this.enter.apply(this, [this.$el]);
        this.triggerTag.after = true;
      }
    } else {
      if (this.triggerTag.after) {
        this.beforeLeave.apply(this, [this.$el]);
        this.triggerTag.after = false;
      }
    }
  }
  //生成唯一值
  createGuid() {
    let guid = obj.data.get(document.body, "mvi-directives-spy-guid") || 0;
    guid++;
    obj.data.set(document.body, "mvi-directives-spy-guid", guid);
    return guid;
  }
  //api：初始化
  init() {
    if (this.hasInit) {
      return;
    }
    this.hasInit = true;
    if (!obj.element.isElement(this.$el)) {
      throw new TypeError("The bound element is not a node element");
    }
    if (typeof this.$root == "string" && this.$root) {
      this.$root = document.documentElement.querySelector(this.$root);
    }
    if (!obj.element.isElement(this.$root)) {
      this.$root = document.body;
    }
    if (typeof this.beforeEnter != "function") {
      this.beforeEnter = function() {
      };
    }
    if (typeof this.enter != "function") {
      this.enter = function() {
      };
    }
    if (typeof this.beforeLeave != "function") {
      this.beforeLeave = function() {
      };
    }
    if (typeof this.leave != "function") {
      this.leave = function() {
      };
    }
    this.scrollHandle();
    obj.event.on(this.$root, `scroll.spy_${this.guid}`, () => {
      this.scrollHandle();
    });
  }
  //api：移除滚动容器监听事件
  destroy() {
    obj.event.off(this.$root, `scroll.spy_${this.guid}`);
  }
}
const Spy$1 = Spy;
const vSpy = withInstallDirective("spy", {
  mounted(el, binding) {
    const options = {};
    if (obj.common.isObject(binding.value)) {
      Object.assign(options, binding.value);
    }
    const spy = new Spy$1(el, options);
    spy.init();
    obj.data.set(el, "directive:spy", spy);
  },
  beforeUnmount(el) {
    const spy = obj.data.get(el, "directive:spy");
    if (spy) {
      spy.destroy();
    }
  }
});
class Upload {
  constructor(element2, options) {
    //组件容器
    __publicField(this, "$el");
    //接受的文件类型
    __publicField(this, "accept");
    //是否直接使用摄像头或者麦克风，只有在accept为image或者video或者audio时有效
    __publicField(this, "capture");
    //限定上传文件的后缀
    __publicField(this, "allowedFileType");
    //上传文件的最小值
    __publicField(this, "minSize");
    //上传文件的最大值
    __publicField(this, "maxSize");
    //上传文件的最大个数
    __publicField(this, "maxLength");
    //上传文件的最小个数
    __publicField(this, "minLength");
    //是否多选
    __publicField(this, "multiple");
    //选择的文件是否追加
    __publicField(this, "append");
    //是否禁用
    __publicField(this, "disabled");
    //选择文件错误触发的回调函数
    __publicField(this, "error");
    //选择文件成功后触发的回调函数
    __publicField(this, "select");
    //加载完毕触发的回调函数
    __publicField(this, "ready");
    //额外的参数
    __publicField(this, "extraData");
    //文件上传元素
    __publicField(this, "$selectInput", null);
    //选择的文件值数组
    __publicField(this, "files", []);
    //是否初始化
    __publicField(this, "hasInit", false);
    options = obj.common.isObject(options) ? options : {};
    this.$el = element2;
    this.accept = options.accept;
    this.capture = options.capture;
    this.allowedFileType = options.allowedFileType;
    this.minSize = options.minSize;
    this.maxSize = options.maxSize;
    this.maxLength = options.maxLength;
    this.minLength = options.minLength;
    this.multiple = options.multiple;
    this.append = options.append;
    this.error = options.error;
    this.select = options.select;
    this.disabled = options.disabled;
    this.ready = options.ready;
    this.extraData = options.extraData;
  }
  //判断选择的文件是否符合规定的后缀格式
  judgeSuffix(fileName) {
    let suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
    if (this.allowedFileType.length == 0) {
      return true;
    } else {
      suffix = suffix.toLocaleLowerCase();
      for (let i = 0; i < this.allowedFileType.length; i++) {
        this.allowedFileType[i] = this.allowedFileType[i].toLocaleLowerCase();
      }
      return this.allowedFileType.includes(suffix);
    }
  }
  //api：初始化
  init() {
    if (this.hasInit) {
      return;
    }
    this.hasInit = true;
    if (!obj.element.isElement(this.$el)) {
      throw new TypeError("The upload element is not specified");
    }
    if (!(this.allowedFileType instanceof Array)) {
      this.allowedFileType = [];
    }
    if (!obj.number.isNumber(this.minSize) || this.minSize <= 0) {
      this.minSize = -1;
    }
    if (!obj.number.isNumber(this.maxSize) || this.maxSize <= 0) {
      this.maxSize = -1;
    }
    if (!obj.number.isNumber(this.maxLength) || this.maxLength <= 0) {
      this.maxLength = -1;
    }
    if (!obj.number.isNumber(this.minLength) || this.minLength <= 0) {
      this.minLength = -1;
    }
    if (typeof this.multiple != "boolean") {
      this.multiple = false;
    }
    if (typeof this.capture != "boolean") {
      this.capture = false;
    }
    if (typeof this.append != "boolean") {
      this.append = false;
    }
    if (typeof this.disabled != "boolean") {
      this.disabled = false;
    }
    if (typeof this.error != "function") {
      this.error = function() {
      };
    }
    if (typeof this.select != "function") {
      this.select = function() {
      };
    }
    if (typeof this.ready != "function") {
      this.ready = function() {
      };
    }
    if (!obj.common.isObject(this.extraData)) {
      this.extraData = {};
    }
    this.$selectInput = obj.element.string2dom("<input type='file' />");
    if (this.accept) {
      this.$selectInput.setAttribute("accept", this.accept);
    }
    if (this.multiple) {
      this.$selectInput.setAttribute("multiple", "multiple");
    }
    if (this.disabled) {
      this.$el.setAttribute("disabled", "disabled");
    }
    this.$el.onclick = () => {
      if (this.disabled) {
        return;
      }
      this.$selectInput.click();
    };
    this.$selectInput.onchange = () => {
      if (this.disabled) {
        return;
      }
      let files = [...this.$selectInput.files];
      this.$selectInput.value = "";
      if (!this.append) {
        this.files = [];
      }
      let length = files.length;
      let isAllAccord = true;
      for (let i = 0; i < length; i++) {
        if (!this.judgeSuffix(files[i].name)) {
          this.error.apply(this, ["suffixError", files[i]]);
          isAllAccord = false;
          break;
        }
        if (files[i].size / 1024 > this.maxSize && this.maxSize > 0) {
          this.error.apply(this, ["maxSizeError", files[i]]);
          isAllAccord = false;
          break;
        }
        if (files[i].size / 1024 < this.minSize && this.minSize > 0) {
          this.error.apply(this, ["minSizeError", files[i]]);
          isAllAccord = false;
          break;
        }
        if (this.files.length + length > this.maxLength && this.maxLength > 0) {
          this.error.apply(this, [
            "maxLengthError"
            /* FILE_MAXLENGTH_ERROR */
          ]);
          isAllAccord = false;
          break;
        }
      }
      if (!isAllAccord) {
        return;
      }
      if (this.files.length + length < this.minLength && this.minLength > 0) {
        this.error.apply(this, [
          "minLengthError"
          /* FILE_MINLENGTH_ERROR */
        ]);
        return;
      }
      this.files = [...this.files, ...files];
      this.select.apply(this, [[...this.files], { ...this.extraData }]);
    };
    this.ready.apply(this, [this]);
  }
  //api：获取已经选择的文件
  getFiles() {
    return {
      files: [...this.files],
      extraData: { ...this.extraData }
    };
  }
  //api：清空选择的文件
  clear() {
    this.files = [];
    this.$selectInput.value = "";
    this.select.apply(this, [[...this.files], { ...this.extraData }]);
  }
  //api：禁用
  setDisabled() {
    this.disabled = true;
    this.$el.setAttribute("disabled", "disabled");
  }
  //api：启用
  setEnabled() {
    this.disabled = false;
    this.$el.removeAttribute("disabled");
  }
}
const Upload$1 = Upload;
const vUpload = withInstallDirective("upload", {
  mounted(el, binding) {
    const options = {};
    if (obj.common.isObject(binding.value)) {
      Object.assign(options, binding.value);
    }
    if (obj.common.isObject(binding.modifiers)) {
      Object.assign(options, binding.modifiers);
    }
    const upload = new Upload$1(el, options);
    upload.init();
  }
});
const IconProps = {
  //图标类型
  type: {
    type: String,
    default: ""
  },
  //是否旋转
  spin: {
    type: Boolean,
    default: false
  },
  //图标的图片链接
  url: {
    type: String,
    default: null
  },
  //图标尺寸
  size: {
    type: String,
    default: null
  },
  //图标颜色
  color: {
    type: String,
    default: null
  }
};
const _sfc_main$13 = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-icon"
  },
  __name: "icon",
  props: IconProps,
  setup(__props) {
    const props = __props;
    const iconStyle = computed(() => {
      let style = {};
      if (props.url) {
        style.backgroundImage = `url(${props.url})`;
        if (props.size) {
          style.width = props.size;
          style.height = props.size;
        }
      } else {
        if (props.size) {
          style.fontSize = props.size;
        }
        if (props.color) {
          style.color = props.color;
        }
      }
      return style;
    });
    return (_ctx, _cache) => {
      return _ctx.url ? (openBlock(), createElementBlock("i", {
        key: 0,
        class: normalizeClass(["mvi-icon-url", { spin: _ctx.spin }]),
        style: normalizeStyle(iconStyle.value)
      }, null, 6)) : (openBlock(), createElementBlock("i", {
        key: 1,
        class: normalizeClass(["mvi-icon", ["icon-" + _ctx.type, _ctx.spin ? "spin" : ""]]),
        style: normalizeStyle(iconStyle.value)
      }, null, 6));
    };
  }
});
const _export_sfc = (sfc, props) => {
  const target = sfc.__vccOpts || sfc;
  for (const [key, val] of props) {
    target[key] = val;
  }
  return target;
};
const icon = /* @__PURE__ */ _export_sfc(_sfc_main$13, [["__scopeId", "data-v-a9ec4f65"]]);
const Icon = withInstall(icon);
const BadgeProps = {
  //徽标内容
  content: {
    type: [String, Number],
    default: null
  },
  //徽标位置
  placement: {
    type: String,
    default: "top-right",
    validator(value) {
      return ["top-right", "top-left", "bottom-left", "bottom-right"].includes(value);
    }
  },
  //是否圆点
  dot: {
    type: Boolean,
    default: false
  },
  //徽标是否显示
  show: {
    type: Boolean,
    default: true
  },
  //徽标偏移值
  offset: {
    type: Array,
    default: function() {
      return null;
    }
  },
  //背景色
  background: {
    type: String,
    default: null
  },
  //字体颜色
  color: {
    type: String,
    default: null
  },
  //是否块级
  block: {
    type: Boolean,
    default: false
  }
};
const _hoisted_1$O = ["data-placement"];
const _hoisted_2$D = ["data-placement"];
const _sfc_main$12 = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-badge"
  },
  __name: "badge",
  props: BadgeProps,
  setup(__props) {
    const props = __props;
    const badgeStyle = computed(() => {
      let style = {};
      if (props.background) {
        style.background = props.background;
      }
      if (props.color) {
        style.color = props.color;
      }
      if (props.offset) {
        if (props.offset[0]) {
          if (props.placement == "top-right" || props.placement == "bottom-right") {
            style.marginRight = props.offset[0];
          } else if (props.placement == "top-left" || props.placement == "bottom-left") {
            style.marginLeft = props.offset[0];
          }
        }
        if (props.offset[1]) {
          if (props.placement == "top-right" || props.placement == "top-left") {
            style.marginTop = props.offset[1];
          } else if (props.placement == "bottom-right" || props.placement == "bottom-left") {
            style.marginBottom = props.offset[1];
          }
        }
      }
      return style;
    });
    const badgeShow = computed(() => {
      const badgeExist = obj.number.isNumber(props.content) || props.content;
      if (!!badgeExist && props.show) {
        return true;
      }
      return false;
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["mvi-badge", { block: _ctx.block }])
      }, [
        renderSlot(_ctx.$slots, "default", {}, void 0, true),
        _ctx.dot && _ctx.show ? (openBlock(), createElementBlock("span", {
          key: 0,
          class: "mvi-badge-el mvi-badge-dot",
          "data-placement": _ctx.placement,
          style: normalizeStyle(badgeStyle.value)
        }, null, 12, _hoisted_1$O)) : badgeShow.value ? (openBlock(), createElementBlock("span", {
          key: 1,
          class: "mvi-badge-el",
          "data-placement": _ctx.placement,
          style: normalizeStyle(badgeStyle.value)
        }, toDisplayString(_ctx.content), 13, _hoisted_2$D)) : createCommentVNode("", true)
      ], 2);
    };
  }
});
const badge = /* @__PURE__ */ _export_sfc(_sfc_main$12, [["__scopeId", "data-v-a2f4d62a"]]);
const Badge = withInstall(badge);
const ButtonProps = {
  //主题类型
  type: {
    type: String,
    default: "default",
    validator(value) {
      return ["default", "info", "success", "error", "warn", "primary"].includes(value);
    }
  },
  //尺寸
  size: {
    type: String,
    default: "medium",
    validator(value) {
      return ["mini", "small", "medium", "large"].includes(value);
    }
  },
  //是否禁用
  disabled: {
    type: Boolean,
    default: false
  },
  //原生按钮type
  nativeType: {
    type: String,
    default: "button"
  },
  //是否独占一行
  block: {
    type: Boolean,
    default: false
  },
  //渲染标签
  tag: {
    type: String,
    default: "button"
  },
  //是否朴素按钮
  plain: {
    type: Boolean,
    default: false
  },
  //圆形按钮
  round: {
    type: Boolean,
    default: false
  },
  //方形按钮
  square: {
    type: Boolean,
    default: false
  },
  //是否显示点击态
  active: {
    type: Boolean,
    default: true
  },
  //是否显示加载状态
  loading: {
    type: Boolean,
    default: false
  },
  //加载文字
  loadText: {
    type: String,
    default: "loading..."
  },
  //加载图标
  loadIcon: {
    type: [String, Object],
    default: function() {
      return {
        type: "load-e",
        spin: true
      };
    }
  }
};
({
  ...ButtonProps,
  text: {
    type: String,
    default: ""
  }
});
const _hoisted_1$N = {
  key: 0,
  class: "mvi-button-load-text"
};
const _sfc_main$11 = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-button"
  },
  __name: "button",
  props: ButtonProps,
  setup(__props) {
    const props = __props;
    const parseIcon = computed(() => {
      return (params) => {
        let icon2 = {
          spin: false,
          type: "",
          url: "",
          color: "",
          size: ""
        };
        if (obj.common.isObject(params)) {
          if (typeof params.spin == "boolean") {
            icon2.spin = params.spin;
          }
          if (typeof params.type == "string") {
            icon2.type = params.type;
          }
          if (typeof params.url == "string") {
            icon2.url = params.url;
          }
          if (typeof params.color == "string") {
            icon2.color = params.color;
          }
          if (typeof params.size == "string") {
            icon2.size = params.size;
          }
        } else if (typeof params == "string") {
          icon2.type = params;
        }
        return icon2;
      };
    });
    const btnClass = computed(() => {
      let cls = [];
      if (props.type) {
        cls.push(props.type);
      }
      if (props.size) {
        cls.push(props.size);
      }
      if (props.round) {
        cls.push("round");
      } else if (props.square) {
        cls.push("square");
      }
      if (props.block) {
        cls.push("block");
      }
      if (props.plain) {
        cls.push("plain");
      }
      if (props.active && !props.disabled) {
        cls.push("active");
      }
      if (props.loading) {
        cls.push("loading");
      }
      return cls;
    });
    const Button2 = defineComponent(() => {
      let attrs = {};
      if (props.tag.toLocaleUpperCase() == "BUTTON") {
        attrs.type = props.nativeType;
      }
      return () => {
        return h(props.tag, attrs, {
          default: useSlots().default
        });
      };
    });
    return (_ctx, _cache) => {
      return openBlock(), createBlock(unref(Button2), {
        disabled: _ctx.disabled || null,
        class: normalizeClass(["mvi-button", btnClass.value])
      }, {
        default: withCtx(() => [
          _ctx.loading && _ctx.$slots.loading ? renderSlot(_ctx.$slots, "loading", { key: 0 }, void 0, true) : _ctx.loading ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
            createVNode(unref(Icon), {
              type: parseIcon.value(_ctx.loadIcon).type,
              color: parseIcon.value(_ctx.loadIcon).color,
              url: parseIcon.value(_ctx.loadIcon).url,
              spin: parseIcon.value(_ctx.loadIcon).spin,
              size: parseIcon.value(_ctx.loadIcon).size
            }, null, 8, ["type", "color", "url", "spin", "size"]),
            _ctx.loadText ? (openBlock(), createElementBlock("span", _hoisted_1$N, toDisplayString(_ctx.loadText), 1)) : createCommentVNode("", true)
          ], 64)) : renderSlot(_ctx.$slots, "default", { key: 2 }, void 0, true)
        ]),
        _: 3
      }, 8, ["disabled", "class"]);
    };
  }
});
const button = /* @__PURE__ */ _export_sfc(_sfc_main$11, [["__scopeId", "data-v-724311f6"]]);
const Button = withInstall(button);
const TriangleProps = {
  //背景色
  background: {
    type: String,
    default: null
  },
  //边框颜色
  borderColor: {
    type: String,
    default: null
  },
  //大小
  size: {
    type: String,
    default: "0.14rem"
  },
  //位置
  placement: {
    type: String,
    default: "top",
    validator(value) {
      return ["top", "left", "right", "bottom"].includes(value);
    }
  }
};
const _hoisted_1$M = ["data-placement"];
const _hoisted_2$C = ["data-placement"];
const _sfc_main$10 = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-triangle"
  },
  __name: "triangle",
  props: TriangleProps,
  setup(__props) {
    const props = __props;
    const triangleStyle = computed(() => {
      let style = {};
      style.borderWidth = props.size;
      if (props.placement == "top") {
        style.borderBottomColor = props.borderColor || "";
      } else if (props.placement == "bottom") {
        style.borderTopColor = props.borderColor || "";
      } else if (props.placement == "left") {
        style.borderRightColor = props.borderColor || "";
      } else if (props.placement == "right") {
        style.borderLeftColor = props.borderColor || "";
      }
      return style;
    });
    const triangleElStyle = computed(() => {
      let style = {};
      style.borderWidth = `calc(${props.size} - 1px)`;
      if (props.placement == "top") {
        style.borderBottomColor = props.background || "";
        style.marginLeft = `-${props.size}`;
      } else if (props.placement == "bottom") {
        style.borderTopColor = props.background || "";
        style.marginLeft = `-${props.size}`;
      } else if (props.placement == "left") {
        style.borderRightColor = props.background || "";
        style.marginTop = `-${props.size}`;
      } else if (props.placement == "right") {
        style.borderLeftColor = props.background || "";
        style.marginTop = `-${props.size}`;
      }
      return style;
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: "mvi-triangle",
        style: normalizeStyle(triangleStyle.value),
        "data-placement": _ctx.placement
      }, [
        createElementVNode("div", {
          class: "mvi-triangle-el",
          style: normalizeStyle(triangleElStyle.value),
          "data-placement": _ctx.placement
        }, null, 12, _hoisted_2$C)
      ], 12, _hoisted_1$M);
    };
  }
});
const triangle = /* @__PURE__ */ _export_sfc(_sfc_main$10, [["__scopeId", "data-v-068b0274"]]);
const Triangle = withInstall(triangle);
const LayerProps = {
  //是否显示悬浮层
  modelValue: {
    type: Boolean,
    default: false
  },
  //悬浮层关联元素
  relate: {
    type: String,
    default: null
  },
  //悬浮层相对于关联元素的位置
  placement: {
    type: String,
    default: "bottom",
    validator(value) {
      return ["top", "left", "right", "bottom", "top-start", "top-end", "left-start", "left-end", "right-start", "right-end", "bottom-start", "bottom-end"].includes(value);
    }
  },
  //悬浮层主体距离关联元素的距离
  offset: {
    type: String,
    default: "0.2rem"
  },
  //悬浮层的z-index
  zIndex: {
    type: Number,
    default: null
  },
  //悬浮层的宽度
  width: {
    type: String,
    default: null
  },
  //悬浮层显示与隐藏动画时长
  timeout: {
    type: Number,
    default: 200
  },
  //点击关联元素和悬浮层以外的元素是否关闭悬浮层
  closable: {
    type: Boolean,
    default: false
  },
  //是否显示三角
  showTriangle: {
    type: Boolean,
    default: false
  },
  //自定义动画
  animation: {
    type: String,
    default: null
  },
  //是否显示阴影
  shadow: {
    type: Boolean,
    default: true
  },
  //是否显示边框
  border: {
    type: Boolean,
    default: false
  },
  //边框颜色
  borderColor: {
    type: String,
    default: null
  },
  //背景色
  background: {
    type: String,
    default: null
  }
};
const _sfc_main$$ = /* @__PURE__ */ defineComponent({
  ...{
    inheritAttrs: false,
    name: "m-layer"
  },
  __name: "layer",
  props: LayerProps,
  emits: ["update:modelValue", "show", "showing", "shown", "hide", "hidding", "hidden"],
  setup(__props, { expose: __expose, emit: __emit }) {
    const emits = __emit;
    const props = __props;
    const instance = getCurrentInstance();
    const layerShow = ref(false);
    const firstShow = ref(false);
    const realPlacement = ref("bottom");
    const layerRef = ref(null);
    const triangleRef = ref(null);
    const observe = ref(null);
    const innerBorderColor = ref("");
    const innerBackground = ref("");
    const $$el = computed(() => {
      return layerRef.value;
    });
    const trianglePlacement = computed(() => {
      if (realPlacement.value == "bottom-start" || realPlacement.value == "bottom" || realPlacement.value == "bottom-end") {
        return "top";
      }
      if (realPlacement.value == "top-start" || realPlacement.value == "top" || realPlacement.value == "top-end") {
        return "bottom";
      }
      if (realPlacement.value == "left-start" || realPlacement.value == "left" || realPlacement.value == "left-end") {
        return "right";
      }
      if (realPlacement.value == "right-start" || realPlacement.value == "right" || realPlacement.value == "right-end") {
        return "left";
      }
    });
    const wrapperStyle = computed(() => {
      let style = {};
      if (props.border && innerBorderColor.value) {
        style.borderColor = innerBorderColor.value;
      }
      if (innerBackground.value) {
        style.background = innerBackground.value;
      }
      if (props.width) {
        style.width = props.width;
      }
      return style;
    });
    const layerStyle = computed(() => {
      let style = {};
      if (obj.number.isNumber(props.zIndex)) {
        style.zIndex = props.zIndex;
      }
      if (props.timeout) {
        style.transition = "transform " + props.timeout + "ms,opacity " + props.timeout + "ms";
        style.webkitTransition = "transform " + props.timeout + "ms,opacity " + props.timeout + "ms";
      }
      if (!props.showTriangle) {
        style.padding = 0;
        if (realPlacement.value == "bottom-start" || realPlacement.value == "bottom" || realPlacement.value == "bottom-end") {
          style.paddingTop = props.offset;
        } else if (realPlacement.value == "top-start" || realPlacement.value == "top" || realPlacement.value == "top-end") {
          style.paddingBottom = props.offset;
        } else if (realPlacement.value == "left-start" || realPlacement.value == "left" || realPlacement.value == "left-end") {
          style.paddingRight = props.offset;
        } else if (realPlacement.value == "right-start" || realPlacement.value == "right" || realPlacement.value == "right-end") {
          style.paddingLeft = props.offset;
        }
      }
      return style;
    });
    const getRelateEl = () => {
      if (props.relate) {
        return document.body.querySelector(props.relate);
      }
      return null;
    };
    const autoAdjust = () => {
      let $relate = getRelateEl();
      let point = obj.element.getElementBounding($relate);
      realPlacement.value = props.placement;
      if (props.placement == "bottom") {
        if (point.bottom < layerRef.value.offsetHeight) {
          if (point.top > layerRef.value.offsetHeight) {
            realPlacement.value = "top";
            if (point.left + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "top-start";
            }
            if (point.right + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "top-end";
            }
          } else if (point.left > layerRef.value.offsetWidth) {
            realPlacement.value = "left";
            if (point.top + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "left-start";
            }
            if (point.bottom + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "left-end";
            }
          } else if (point.right > layerRef.value.offsetWidth) {
            realPlacement.value = "right";
            if (point.top + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "right-start";
            }
            if (point.bottom + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "right-end";
            }
          }
        } else {
          if (point.left + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
            realPlacement.value = "bottom-start";
          }
          if (point.right + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
            realPlacement.value = "bottom-end";
          }
        }
      } else if (props.placement == "bottom-start") {
        if (point.bottom < layerRef.value.offsetHeight) {
          if (point.top > layerRef.value.offsetHeight) {
            realPlacement.value = "top-start";
            if (point.right + $relate.offsetWidth < layerRef.value.offsetWidth) {
              realPlacement.value = "top";
            }
            if (point.right + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "top-end";
            }
          } else if (point.left > layerRef.value.offsetWidth) {
            realPlacement.value = "left";
            if (point.top + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "left-start";
            }
            if (point.bottom + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "left-end";
            }
          } else if (point.right > layerRef.value.offsetWidth) {
            realPlacement.value = "right";
            if (point.top + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "right-start";
            }
            if (point.bottom + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "right-end";
            }
          }
        } else {
          if (point.right + $relate.offsetWidth < layerRef.value.offsetWidth) {
            realPlacement.value = "bottom";
          }
          if (point.right + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
            realPlacement.value = "bottom-end";
          }
        }
      } else if (props.placement == "bottom-end") {
        if (point.bottom < layerRef.value.offsetHeight) {
          if (point.top > layerRef.value.offsetHeight) {
            realPlacement.value = "top-end";
            if (point.left + $relate.offsetWidth < layerRef.value.offsetWidth) {
              realPlacement.value = "top";
            }
            if (point.left + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "top-start";
            }
          } else if (point.left > layerRef.value.offsetWidth) {
            realPlacement.value = "left";
            if (point.top + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "left-start";
            }
            if (point.bottom + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "left-end";
            }
          } else if (point.right > layerRef.value.offsetWidth) {
            realPlacement.value = "right";
            if (point.top + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "right-start";
            }
            if (point.bottom + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "right-end";
            }
          }
        } else {
          if (point.left + $relate.offsetWidth < layerRef.value.offsetWidth) {
            realPlacement.value = "bottom";
          }
          if (point.left + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
            realPlacement.value = "bottom-start";
          }
        }
      } else if (props.placement == "top") {
        if (point.top < layerRef.value.offsetHeight) {
          if (point.bottom > layerRef.value.offsetHeight) {
            realPlacement.value = "bottom";
            if (point.left + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "bottom-start";
            }
            if (point.right + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "bottom-end";
            }
          } else if (point.left > layerRef.value.offsetWidth) {
            realPlacement.value = "left";
            if (point.top + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "left-start";
            }
            if (point.bottom + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "left-end";
            }
          } else if (point.right > layerRef.value.offsetWidth) {
            realPlacement.value = "right";
            if (point.top + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "right-start";
            }
            if (point.bottom + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "right-end";
            }
          }
        } else {
          if (point.left + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
            realPlacement.value = "top-start";
          }
          if (point.right + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
            realPlacement.value = "top-end";
          }
        }
      } else if (props.placement == "top-start") {
        if (point.top < layerRef.value.offsetHeight) {
          if (point.bottom > layerRef.value.offsetHeight) {
            realPlacement.value = "bottom-start";
            if (point.right + $relate.offsetWidth < layerRef.value.offsetWidth) {
              realPlacement.value = "bottom";
            }
            if (point.right + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "bottom-end";
            }
          } else if (point.left > layerRef.value.offsetWidth) {
            realPlacement.value = "left";
            if (point.top + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "left-start";
            }
            if (point.bottom + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "left-end";
            }
          } else if (point.right > layerRef.value.offsetWidth) {
            realPlacement.value = "right";
            if (point.top + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "right-start";
            }
            if (point.bottom + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "right-end";
            }
          }
        } else {
          if (point.right + $relate.offsetWidth < layerRef.value.offsetWidth) {
            realPlacement.value = "top";
          }
          if (point.right + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
            realPlacement.value = "top-end";
          }
        }
      } else if (props.placement == "top-end") {
        if (point.top < layerRef.value.offsetHeight) {
          if (point.bottom > layerRef.value.offsetHeight) {
            realPlacement.value = "bottom-end";
            if (point.left + $relate.offsetWidth < layerRef.value.offsetWidth) {
              realPlacement.value = "bottom";
            }
            if (point.left + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "bottom-start";
            }
          } else if (point.left > layerRef.value.offsetWidth) {
            realPlacement.value = "left";
            if (point.top + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "left-start";
            }
            if (point.bottom + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "left-end";
            }
          } else if (point.right > layerRef.value.offsetWidth) {
            realPlacement.value = "right";
            if (point.top + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "right-start";
            }
            if (point.bottom + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "right-end";
            }
          }
        } else {
          if (point.left + $relate.offsetWidth < layerRef.value.offsetWidth) {
            realPlacement.value = "top";
          }
          if (point.left + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
            realPlacement.value = "top-start";
          }
        }
      } else if (props.placement == "left") {
        if (point.left < layerRef.value.offsetWidth) {
          if (point.right > layerRef.value.offsetWidth) {
            realPlacement.value = "right";
            if (point.top + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "right-start";
            }
            if (point.bottom + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "right-end";
            }
          } else if (point.top > layerRef.value.offsetHeight) {
            realPlacement.value = "top";
            if (point.left + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "top-start";
            }
            if (point.right + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "top-end";
            }
          } else if (point.bottom > layerRef.value.offsetHeight) {
            realPlacement.value = "bottom";
            if (point.left + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "bottom-start";
            }
            if (point.right + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "bottom-end";
            }
          }
        } else {
          if (point.top + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
            realPlacement.value = "left-start";
          }
          if (point.bottom + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
            realPlacement.value = "left-end";
          }
        }
      } else if (props.placement == "left-start") {
        if (point.left < layerRef.value.offsetWidth) {
          if (point.right > layerRef.value.offsetWidth) {
            realPlacement.value = "right-start";
            if (point.bottom + $relate.offsetHeight < layerRef.value.offsetHeight) {
              realPlacement.value = "right";
            }
            if (point.bottom + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "right-end";
            }
          } else if (point.top > layerRef.value.offsetHeight) {
            realPlacement.value = "top";
            if (point.left + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "top-start";
            }
            if (point.right + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "top-end";
            }
          } else if (point.bottom > layerRef.value.offsetHeight) {
            realPlacement.value = "bottom";
            if (point.left + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "bottom-start";
            }
            if (point.right + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "bottom-end";
            }
          }
        } else {
          if (point.bottom + $relate.offsetHeight < layerRef.value.offsetHeight) {
            realPlacement.value = "left";
          }
          if (point.bottom + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
            realPlacement.value = "left-end";
          }
        }
      } else if (props.placement == "left-end") {
        if (point.left < layerRef.value.offsetWidth) {
          if (point.right > layerRef.value.offsetWidth) {
            realPlacement.value = "right-end";
            if (point.top + $relate.offsetHeight < layerRef.value.offsetHeight) {
              realPlacement.value = "right";
            }
            if (point.top + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "right-start";
            }
          } else if (point.top > layerRef.value.offsetHeight) {
            realPlacement.value = "top";
            if (point.left + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "top-start";
            }
            if (point.right + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "top-end";
            }
          } else if (point.bottom > layerRef.value.offsetHeight) {
            realPlacement.value = "bottom";
            if (point.left + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "bottom-start";
            }
            if (point.right + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "bottom-end";
            }
          }
        } else {
          if (point.top + $relate.offsetHeight < layerRef.value.offsetHeight) {
            realPlacement.value = "left";
          }
          if (point.top + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
            realPlacement.value = "left-start";
          }
        }
      } else if (props.placement == "right") {
        if (point.right < layerRef.value.offsetWidth) {
          if (point.left > layerRef.value.offsetWidth) {
            realPlacement.value = "left";
            if (point.top + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "left-start";
            }
            if (point.bottom + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "left-end";
            }
          } else if (point.top > layerRef.value.offsetHeight) {
            realPlacement.value = "top";
            if (point.left + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "top-start";
            }
            if (point.right + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "top-end";
            }
          } else if (point.bottom > layerRef.value.offsetHeight) {
            realPlacement.value = "bottom";
            if (point.left + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "bottom-start";
            }
            if (point.right + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "bottom-end";
            }
          }
        } else {
          if (point.top + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
            realPlacement.value = "right-start";
          }
          if (point.bottom + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
            realPlacement.value = "right-end";
          }
        }
      } else if (props.placement == "right-start") {
        if (point.right < layerRef.value.offsetWidth) {
          if (point.left > layerRef.value.offsetWidth) {
            realPlacement.value = "left-start";
            if (point.bottom + $relate.offsetHeight < layerRef.value.offsetHeight) {
              realPlacement.value = "left";
            }
            if (point.bottom + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "left-end";
            }
          } else if (point.top > layerRef.value.offsetHeight) {
            realPlacement.value = "top";
            if (point.left + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "top-start";
            }
            if (point.right + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "top-end";
            }
          } else if (point.bottom > layerRef.value.offsetHeight) {
            realPlacement.value = "bottom";
            if (point.left + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "bottom-start";
            }
            if (point.right + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "bottom-end";
            }
          }
        } else {
          if (point.bottom + $relate.offsetHeight < layerRef.value.offsetHeight) {
            realPlacement.value = "right";
          }
          if (point.bottom + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
            realPlacement.value = "right-end";
          }
        }
      } else if (props.placement == "right-end") {
        if (point.right < layerRef.value.offsetWidth) {
          if (point.left > layerRef.value.offsetWidth) {
            realPlacement.value = "left-end";
            if (point.top + $relate.offsetHeight < layerRef.value.offsetHeight) {
              realPlacement.value = "left";
            }
            if (point.top + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
              realPlacement.value = "left-start";
            }
          } else if (point.top > layerRef.value.offsetHeight) {
            realPlacement.value = "top";
            if (point.left + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "top-start";
            }
            if (point.right + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "top-end";
            }
          } else if (point.bottom > layerRef.value.offsetHeight) {
            realPlacement.value = "bottom";
            if (point.left + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "bottom-start";
            }
            if (point.right + $relate.offsetWidth / 2 < layerRef.value.offsetWidth / 2) {
              realPlacement.value = "bottom-end";
            }
          }
        } else {
          if (point.top + $relate.offsetHeight < layerRef.value.offsetHeight) {
            realPlacement.value = "right";
          }
          if (point.top + $relate.offsetHeight / 2 < layerRef.value.offsetHeight / 2) {
            realPlacement.value = "right-start";
          }
        }
      }
    };
    const reset = () => {
      if (!obj.element.isElement(layerRef.value)) {
        return;
      }
      if (props.showTriangle) {
        layerRef.value.style.padding = "0";
        if (realPlacement.value == "bottom-start" || realPlacement.value == "bottom" || realPlacement.value == "bottom-end") {
          layerRef.value.style.paddingTop = `calc(${props.offset} + ${triangleRef.value.$el.offsetHeight}px)`;
        } else if (realPlacement.value == "top-start" || realPlacement.value == "top" || realPlacement.value == "top-end") {
          layerRef.value.style.paddingBottom = `calc(${props.offset} + ${triangleRef.value.$el.offsetHeight}px)`;
        } else if (realPlacement.value == "left-start" || realPlacement.value == "left" || realPlacement.value == "left-end") {
          layerRef.value.style.paddingRight = `calc(${props.offset} + ${triangleRef.value.$el.offsetWidth}px)`;
        } else if (realPlacement.value == "right-start" || realPlacement.value == "right" || realPlacement.value == "right-end") {
          layerRef.value.style.paddingLeft = `calc(${props.offset} + ${triangleRef.value.$el.offsetWidth}px)`;
        }
      }
      const $relate = getRelateEl();
      const rect = obj.element.getElementBounding($relate);
      if (realPlacement.value == "bottom" || realPlacement.value == "bottom-start" || realPlacement.value == "bottom-end") {
        layerRef.value.style.top = rect.top + $relate.offsetHeight + "px";
        layerRef.value.style.bottom = "auto";
        if (realPlacement.value == "bottom") {
          layerRef.value.style.left = rect.left + $relate.offsetWidth / 2 - layerRef.value.offsetWidth / 2 + "px";
          layerRef.value.style.right = "auto";
        } else if (realPlacement.value == "bottom-start") {
          layerRef.value.style.left = rect.left + "px";
          layerRef.value.style.right = "auto";
        } else if (realPlacement.value == "bottom-end") {
          layerRef.value.style.left = "auto";
          layerRef.value.style.right = rect.right + "px";
        }
      } else if (realPlacement.value == "top" || realPlacement.value == "top-start" || realPlacement.value == "top-end") {
        layerRef.value.style.top = "auto";
        layerRef.value.style.bottom = rect.bottom + $relate.offsetHeight + "px";
        if (realPlacement.value == "top") {
          layerRef.value.style.left = rect.left + $relate.offsetWidth / 2 - layerRef.value.offsetWidth / 2 + "px";
          layerRef.value.style.right = "auto";
        } else if (realPlacement.value == "top-start") {
          layerRef.value.style.left = rect.left + "px";
          layerRef.value.style.right = "auto";
        } else if (realPlacement.value == "top-end") {
          layerRef.value.style.left = "auto";
          layerRef.value.style.right = rect.right + "px";
        }
      } else if (realPlacement.value == "left" || realPlacement.value == "left-start" || realPlacement.value == "left-end") {
        layerRef.value.style.left = "auto";
        layerRef.value.style.right = rect.right + $relate.offsetWidth + "px";
        if (realPlacement.value == "left") {
          layerRef.value.style.top = rect.top + $relate.offsetHeight / 2 - layerRef.value.offsetHeight / 2 + "px";
          layerRef.value.style.bottom = "auto";
        } else if (realPlacement.value == "left-start") {
          layerRef.value.style.top = rect.top + "px";
          layerRef.value.style.bottom = "auto";
        } else if (realPlacement.value == "left-end") {
          layerRef.value.style.top = "auto";
          layerRef.value.style.bottom = rect.bottom + "px";
        }
      } else if (realPlacement.value == "right" || realPlacement.value == "right-start" || realPlacement.value == "right-end") {
        layerRef.value.style.left = rect.left + $relate.offsetWidth + "px";
        layerRef.value.style.right = "auto";
        if (realPlacement.value == "right") {
          layerRef.value.style.top = rect.top + $relate.offsetHeight / 2 - layerRef.value.offsetHeight / 2 + "px";
          layerRef.value.style.bottom = "auto";
        } else if (realPlacement.value == "right-start") {
          layerRef.value.style.top = rect.top + "px";
          layerRef.value.style.bottom = "auto";
        } else if (realPlacement.value == "right-end") {
          layerRef.value.style.top = "auto";
          layerRef.value.style.bottom = rect.bottom + "px";
        }
      }
    };
    const resetTriangle = () => {
      if (!props.showTriangle || triangleRef.value && !triangleRef.value.$el) {
        return;
      }
      const relateWidth = getRelateEl().offsetWidth;
      const elWidth = layerRef.value.offsetWidth;
      const relateHeight = getRelateEl().offsetHeight;
      const elHeight = layerRef.value.offsetHeight;
      const triWidth = triangleRef.value.$el.offsetWidth;
      const triHeight = triangleRef.value.$el.offsetHeight;
      if (realPlacement.value == "bottom-start") {
        triangleRef.value.$el.style.top = "auto";
        triangleRef.value.$el.style.right = "auto";
        triangleRef.value.$el.style.bottom = "100%";
        triangleRef.value.$el.style.left = (relateWidth > elWidth ? elWidth : relateWidth) / 2 - triWidth / 2 + "px";
      } else if (realPlacement.value == "bottom") {
        triangleRef.value.$el.style.top = "auto";
        triangleRef.value.$el.style.right = "auto";
        triangleRef.value.$el.style.bottom = "100%";
        triangleRef.value.$el.style.left = elWidth / 2 - triWidth / 2 + "px";
      } else if (realPlacement.value == "bottom-end") {
        triangleRef.value.$el.style.top = "auto";
        triangleRef.value.$el.style.left = "auto";
        triangleRef.value.$el.style.bottom = "100%";
        triangleRef.value.$el.style.right = (relateWidth > elWidth ? elWidth : relateWidth) / 2 - triWidth / 2 + "px";
      } else if (realPlacement.value == "top-start") {
        triangleRef.value.$el.style.top = "100%";
        triangleRef.value.$el.style.right = "auto";
        triangleRef.value.$el.style.bottom = "auto";
        triangleRef.value.$el.style.left = (relateWidth > elWidth ? elWidth : relateWidth) / 2 - triWidth / 2 + "px";
      } else if (realPlacement.value == "top") {
        triangleRef.value.$el.style.top = "100%";
        triangleRef.value.$el.style.right = "auto";
        triangleRef.value.$el.style.bottom = "auto";
        triangleRef.value.$el.style.left = elWidth / 2 - triWidth / 2 + "px";
      } else if (realPlacement.value == "top-end") {
        triangleRef.value.$el.style.top = "100%";
        triangleRef.value.$el.style.left = "auto";
        triangleRef.value.$el.style.bottom = "auto";
        triangleRef.value.$el.style.right = (relateWidth > elWidth ? elWidth : relateWidth) / 2 - triWidth / 2 + "px";
      } else if (realPlacement.value == "left-start") {
        triangleRef.value.$el.style.left = "100%";
        triangleRef.value.$el.style.right = "auto";
        triangleRef.value.$el.style.top = (relateHeight > elHeight ? elHeight : relateHeight) / 2 - triHeight / 2 + "px";
        triangleRef.value.$el.style.bottom = "auto";
      } else if (realPlacement.value == "left") {
        triangleRef.value.$el.style.left = "100%";
        triangleRef.value.$el.style.right = "auto";
        triangleRef.value.$el.style.top = elHeight / 2 - triHeight / 2 + "px";
        triangleRef.value.$el.style.bottom = "auto";
      } else if (realPlacement.value == "left-end") {
        triangleRef.value.$el.style.left = "100%";
        triangleRef.value.$el.style.right = "auto";
        triangleRef.value.$el.style.bottom = (relateHeight > elHeight ? elHeight : relateHeight) / 2 - triHeight / 2 + "px";
        triangleRef.value.$el.style.top = "auto";
      } else if (realPlacement.value == "right-start") {
        triangleRef.value.$el.style.right = "100%";
        triangleRef.value.$el.style.left = "auto";
        triangleRef.value.$el.style.top = (relateHeight > elHeight ? elHeight : relateHeight) / 2 - triHeight / 2 + "px";
        triangleRef.value.$el.style.bottom = "auto";
      } else if (realPlacement.value == "right") {
        triangleRef.value.$el.style.right = "100%";
        triangleRef.value.$el.style.left = "auto";
        triangleRef.value.$el.style.top = elHeight / 2 - triHeight / 2 + "px";
        triangleRef.value.$el.style.bottom = "auto";
      } else if (realPlacement.value == "right-end") {
        triangleRef.value.$el.style.right = "100%";
        triangleRef.value.$el.style.left = "auto";
        triangleRef.value.$el.style.bottom = (relateHeight > elHeight ? elHeight : relateHeight) / 2 - triHeight / 2 + "px";
        triangleRef.value.$el.style.top = "auto";
      }
    };
    const update = () => {
      if (layerShow.value && firstShow.value) {
        autoAdjust();
        reset();
        nextTick(() => {
          resetTriangle();
        });
      }
    };
    const handleScroll = () => {
      const handleScroll2 = (el) => {
        obj.event.on(el, `scroll.layer_${instance.uid}`, () => {
          emits("update:modelValue", false);
        });
        if (el.parentNode) {
          handleScroll2(el.parentNode);
        }
      };
      const relate = getRelateEl();
      if (relate && relate.parentNode) {
        handleScroll2(relate.parentNode);
      }
    };
    const removeScroll = () => {
      const removeScroll2 = (el) => {
        obj.event.off(el, `scroll.layer_${instance.uid}`);
        if (el.parentNode) {
          removeScroll2(el.parentNode);
        }
      };
      const relate = getRelateEl();
      if (relate && relate.parentNode) {
        removeScroll2(relate.parentNode);
      }
    };
    const beforeEnter = (el) => {
      if (obj.data.get(el, "mvi-layer-beforeEnter-trigger")) {
        return;
      }
      obj.data.set(el, "mvi-layer-beforeEnter-trigger", true);
      emits("show", el);
      if (typeof instance.appContext.config.globalProperties.layerComponentWatch == "function") {
        instance.appContext.config.globalProperties.layerComponentWatch.apply(instance.proxy, ["show", el]);
      }
    };
    const enter = (el) => {
      if (obj.data.get(el, "mvi-layer-enter-trigger")) {
        return;
      }
      obj.data.set(el, "mvi-layer-enter-trigger", true);
      nextTick(() => {
        update();
        emits("showing", el);
        if (typeof instance.appContext.config.globalProperties.layerComponentWatch == "function") {
          instance.appContext.config.globalProperties.layerComponentWatch.apply(instance.proxy, ["showing", el]);
        }
      });
    };
    const afterEnter = (el) => {
      emits("shown", el);
      if (typeof instance.appContext.config.globalProperties.layerComponentWatch == "function") {
        instance.appContext.config.globalProperties.layerComponentWatch.apply(instance.proxy, ["shown", el]);
      }
    };
    const beforeLeave = (el) => {
      obj.data.remove(el, "mvi-layer-beforeEnter-trigger");
      obj.data.remove(el, "mvi-layer-enter-trigger");
      emits("hide", el);
      if (typeof instance.appContext.config.globalProperties.layerComponentWatch == "function") {
        instance.appContext.config.globalProperties.layerComponentWatch.apply(instance.proxy, ["hide", el]);
      }
    };
    const leave = (el) => {
      emits("hidding", el);
      if (typeof instance.appContext.config.globalProperties.layerComponentWatch == "function") {
        instance.appContext.config.globalProperties.layerComponentWatch.apply(instance.proxy, ["hidding", el]);
      }
    };
    const afterLeave = (el) => {
      emits("hidden", el);
      if (typeof instance.appContext.config.globalProperties.layerComponentWatch == "function") {
        instance.appContext.config.globalProperties.layerComponentWatch.apply(instance.proxy, ["hidden", el]);
      }
    };
    watch(
      () => props.placement,
      () => {
        update();
      }
    );
    watch(
      () => props.borderColor,
      (newVal) => {
        innerBorderColor.value = newVal || (isDark() ? "#222" : "#eee");
      },
      {
        immediate: true
      }
    );
    watch(
      () => props.background,
      (newVal) => {
        innerBackground.value = newVal || (isDark() ? "#1a1a1a" : "#fff");
      },
      {
        immediate: true
      }
    );
    watch(
      () => props.modelValue,
      (newValue) => {
        if (newValue) {
          if (!firstShow.value) {
            firstShow.value = true;
          }
        }
        layerShow.value = newValue;
      }
    );
    onMounted(() => {
      if (props.modelValue) {
        if (!firstShow.value) {
          firstShow.value = true;
        }
        layerShow.value = props.modelValue;
      }
      handleScroll();
      obj.event.on(window, `resize.layer_${instance.uid}`, update);
      obj.event.on(window, `click.layer_${instance.uid}`, (event2) => {
        if (layerShow.value && firstShow.value && props.closable) {
          if (obj.element.isContains(layerRef.value, event2.target) || obj.element.isContains(getRelateEl(), event2.target)) {
            return;
          }
          emits("update:modelValue", false);
        }
      });
      observe.value = new Observe$1(document.documentElement, {
        attributes: true,
        childList: false,
        subtree: false,
        attributeNames: ["data-mvi-dark"],
        attributesChange: () => {
          innerBorderColor.value = props.borderColor || (isDark() ? "#222" : "#eee");
          innerBackground.value = props.background || (isDark() ? "#1a1a1a" : "#fff");
        }
      });
      observe.value.init();
    });
    onBeforeUnmount(() => {
      var _a;
      removeScroll();
      obj.event.off(window, `resize.layer_${instance.uid} click.layer_${instance.uid}`);
      (_a = observe.value) == null ? void 0 : _a.destroy();
    });
    __expose({
      $$el,
      update
    });
    return (_ctx, _cache) => {
      return openBlock(), createBlock(Teleport, { to: "body" }, [
        createVNode(Transition, {
          name: _ctx.animation || "mvi-layer",
          onBeforeEnter: beforeEnter,
          onEnter: enter,
          onAfterEnter: afterEnter,
          onLeave: leave,
          onBeforeLeave: beforeLeave,
          onAfterLeave: afterLeave
        }, {
          default: withCtx(() => [
            firstShow.value ? withDirectives((openBlock(), createElementBlock("div", mergeProps({
              key: 0,
              ref_key: "layerRef",
              ref: layerRef,
              class: "mvi-layer",
              style: layerStyle.value
            }, _ctx.$attrs), [
              createElementVNode("div", {
                class: normalizeClass(["mvi-layer-wrapper", { shadow: _ctx.shadow, border: _ctx.border }]),
                style: normalizeStyle(wrapperStyle.value)
              }, [
                _ctx.showTriangle ? (openBlock(), createBlock(unref(Triangle), {
                  key: 0,
                  ref_key: "triangleRef",
                  ref: triangleRef,
                  class: "mvi-layer-triangle",
                  placement: trianglePlacement.value,
                  background: innerBackground.value,
                  "border-color": _ctx.border ? innerBorderColor.value : innerBackground.value,
                  size: "0.14rem"
                }, null, 8, ["placement", "background", "border-color"])) : createCommentVNode("", true),
                renderSlot(_ctx.$slots, "default", {}, void 0, true)
              ], 6)
            ], 16)), [
              [vShow, layerShow.value]
            ]) : createCommentVNode("", true)
          ]),
          _: 3
        }, 8, ["name"])
      ]);
    };
  }
});
const layer = /* @__PURE__ */ _export_sfc(_sfc_main$$, [["__scopeId", "data-v-cbd07307"]]);
const Layer = withInstall(layer);
const LabelProps = {
  //标签样式
  type: {
    type: String,
    default: "default",
    validator(value) {
      return ["default", "error", "info", "primary", "success", "warn"].includes(value);
    }
  },
  //标签大小
  size: {
    type: String,
    default: "medium",
    validator(value) {
      return ["medium", "large"].includes(value);
    }
  },
  //是否为朴素样式
  plain: {
    type: Boolean,
    default: false
  },
  //是否为圆角样式
  round: {
    type: Boolean,
    default: false
  },
  //是否为标记样式
  mark: {
    type: Boolean,
    default: false
  },
  //是否可关闭
  closable: {
    type: Boolean,
    default: false
  },
  //标记样式时是否反向
  reverse: {
    type: Boolean,
    default: false
  }
};
const _sfc_main$_ = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-label"
  },
  __name: "label",
  props: LabelProps,
  setup(__props) {
    const props = __props;
    const show = ref(true);
    const labelClass = computed(() => {
      let cls = [];
      if (props.size) {
        cls.push(props.size);
      }
      if (props.type) {
        cls.push(props.type);
      }
      if (props.plain) {
        cls.push("plain");
      }
      if (props.round) {
        cls.push("round");
      }
      if (props.mark) {
        cls.push("mark");
        if (props.reverse) {
          cls.push("reverse");
        }
      }
      return cls;
    });
    const closeLabel = () => {
      show.value = false;
    };
    return (_ctx, _cache) => {
      return _ctx.closable ? (openBlock(), createBlock(Transition, {
        key: 0,
        name: "mvi-label"
      }, {
        default: withCtx(() => [
          show.value ? (openBlock(), createElementBlock("div", {
            key: 0,
            class: normalizeClass(["mvi-label", labelClass.value])
          }, [
            renderSlot(_ctx.$slots, "default", {}, void 0, true),
            createElementVNode("span", {
              class: "mvi-label-closable",
              onClick: closeLabel
            }, [
              createVNode(unref(Icon), { type: "times" })
            ])
          ], 2)) : createCommentVNode("", true)
        ]),
        _: 3
      })) : (openBlock(), createElementBlock("div", {
        key: 1,
        class: normalizeClass(["mvi-label", labelClass.value])
      }, [
        renderSlot(_ctx.$slots, "default", {}, void 0, true)
      ], 2));
    };
  }
});
const label = /* @__PURE__ */ _export_sfc(_sfc_main$_, [["__scopeId", "data-v-8546bce5"]]);
const Label = withInstall(label);
const InputProps = {
  //输入框的值
  modelValue: {
    type: [String, Number],
    default: ""
  },
  //占位符
  placeholder: {
    type: String,
    default: ""
  },
  //输入框左侧文本
  label: {
    type: String,
    default: null
  },
  //左侧文本宽度
  labelWidth: {
    type: String,
    default: null
  },
  //左侧文本对齐方式
  labelAlign: {
    type: String,
    default: "left",
    validator(value) {
      return ["left", "center", "right"].includes(value);
    }
  },
  //文本与输入框的间距
  labelOffset: {
    type: String,
    default: null
  },
  //输入框类型
  type: {
    type: String,
    default: "text",
    validator(value) {
      return ["text", "password", "number", "tel", "textarea"].includes(value);
    }
  },
  //原生name属性
  name: {
    type: String,
    default: null
  },
  //最大字数限制
  maxlength: {
    type: Number,
    default: -1
  },
  //输入框尺寸
  size: {
    type: String,
    default: "medium",
    validator(value) {
      return ["medium", "large"].includes(value);
    }
  },
  //是否显示下边框
  border: {
    type: Boolean,
    default: false
  },
  //是否禁用
  disabled: {
    type: Boolean,
    default: false
  },
  //是否只读
  readonly: {
    type: Boolean,
    default: false
  },
  //是否显示表单必填星号
  required: {
    type: Boolean,
    default: false
  },
  //是否启用清除图标
  clearable: {
    type: Boolean,
    default: false
  },
  //是否自动聚焦
  autofocus: {
    type: Boolean,
    default: false
  },
  //是否显示字数统计，需要设置maxlength属性
  showWordLimit: {
    type: Boolean,
    default: false
  },
  //文本左侧图标
  left: {
    type: [String, Object],
    default: null
  },
  //右侧图标
  right: {
    type: [String, Object],
    default: null
  },
  //type=textarea时的行数
  rows: {
    type: Number,
    default: 1
  },
  //自动调整高度
  autosize: {
    type: [Boolean, Object],
    default: false,
    validator(value) {
      if (obj.common.isObject(value)) {
        if (obj.number.isNumber(value.minRows) && obj.number.isNumber(value.maxRows)) {
          if (value.minRows > value.maxRows) {
            return false;
          }
        }
      }
      return true;
    }
  },
  //文本对齐方式
  align: {
    type: String,
    default: "left",
    validator(value) {
      return ["left", "center", "right"].includes(value);
    }
  },
  //输入框调起移动端键盘类型
  inputMode: {
    type: String,
    default: "text",
    validator(value) {
      return ["none", "text", "decimal", "numeric", "tel", "search", "email", "url"].includes(value);
    }
  }
};
const _hoisted_1$L = ["disabled", "data-type"];
const _hoisted_2$B = ["textContent"];
const _hoisted_3$v = ["placeholder", "maxlength", "disabled", "readonly", "autofocus", "rows", "name"];
const _hoisted_4$n = ["type", "inputmode", "placeholder", "maxlength", "disabled", "readonly", "autofocus", "name"];
const _hoisted_5$e = {
  key: 6,
  class: "mvi-input-words"
};
const _sfc_main$Z = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-input"
  },
  __name: "input",
  props: InputProps,
  emits: ["update:modelValue", "left-click", "right-click", "focus", "blur", "input", "clear", "keydown", "keyup"],
  setup(__props, { emit: __emit }) {
    const props = __props;
    const emits = __emit;
    const focus = ref(false);
    const textareaRef = ref(null);
    const inputRef = ref(null);
    const inputClass = computed(() => {
      let cls = [props.size];
      if (props.border) {
        cls.push("border");
      }
      if (props.showWordLimit && props.maxlength > 0) {
        cls.push("words");
      }
      if (props.required) {
        cls.push("required");
      }
      return cls;
    });
    const realValue = computed({
      set(value) {
        if (props.modelValue !== value) {
          emits("update:modelValue", value);
        }
      },
      get() {
        let value = props.modelValue === null ? "" : props.modelValue.toString();
        if (props.type == "number") {
          value = value.replace(/\D/g, "");
        }
        if (props.maxlength > 0 && value.length > props.maxlength) {
          value = value.substring(0, props.maxlength);
        }
        if (props.modelValue !== value) {
          emits("update:modelValue", value);
        }
        return value;
      }
    });
    const showClear = computed(() => {
      if (props.disabled || props.readonly) {
        return false;
      }
      if (realValue.value && focus.value) {
        return true;
      }
      return false;
    });
    const parseIcon = computed(() => {
      return (params) => {
        let icon2 = {
          spin: false,
          type: "",
          url: "",
          color: "",
          size: ""
        };
        if (obj.common.isObject(params)) {
          if (typeof params.spin == "boolean") {
            icon2.spin = params.spin;
          }
          if (typeof params.type == "string") {
            icon2.type = params.type;
          }
          if (typeof params.url == "string") {
            icon2.url = params.url;
          }
          if (typeof params.color == "string") {
            icon2.color = params.color;
          }
          if (typeof params.size == "string") {
            icon2.size = params.size;
          }
        } else if (typeof params == "string") {
          icon2.type = params;
        }
        return icon2;
      };
    });
    const cmpType = computed(() => {
      if (props.type == "number") {
        return "text";
      }
      return props.type;
    });
    const rowsFilter = computed(() => {
      let rows = props.rows;
      if (obj.common.isObject(props.autosize)) {
        if (obj.number.isNumber(props.autosize.minRows)) {
          if (props.rows < props.autosize.minRows) {
            rows = props.autosize.minRows;
          }
        }
        if (obj.number.isNumber(props.autosize.maxRows)) {
          if (props.rows > props.autosize.maxRows) {
            rows = props.autosize.maxRows;
          }
        }
      }
      return rows;
    });
    const labelStyle = computed(() => {
      let style = {};
      if (props.labelWidth) {
        style.width = props.labelWidth;
      }
      if (props.labelAlign) {
        if (props.labelAlign == "left") {
          style.justifyContent = "flex-start";
        } else if (props.labelAlign == "right") {
          style.justifyContent = "flex-end";
        } else {
          style.justifyContent = props.labelAlign;
        }
      }
      if (props.labelOffset) {
        style.marginRight = props.labelOffset;
      }
      return style;
    });
    const inputStyle = computed(() => {
      return {
        textAlign: props.align ? props.align : ""
      };
    });
    const showLeft = computed(() => {
      return !!(useSlots().left || parseIcon.value(props.left).type || parseIcon.value(props.left).url);
    });
    const showRight = computed(() => {
      return !!(useSlots().right || parseIcon.value(props.right).type || parseIcon.value(props.right).url);
    });
    const autosizeSet = () => {
      textareaRef.value.style.height = "auto";
      textareaRef.value.scrollTop = 0;
      textareaRef.value.style.height = obj.element.getScrollHeight(textareaRef.value) + "px";
    };
    const rows2Height = (rows) => {
      let lineHeight = Math.floor(parseFloat(obj.element.getCssStyle(textareaRef.value, "line-height")));
      return rows * lineHeight;
    };
    const setMaxMinHeight = () => {
      if (obj.common.isObject(props.autosize)) {
        if (obj.number.isNumber(props.autosize.maxRows)) {
          let maxHeight = rows2Height(props.autosize.maxRows);
          textareaRef.value.style.maxHeight = maxHeight + "px";
        }
        if (obj.number.isNumber(props.autosize.minRows)) {
          let minHeight = rows2Height(props.autosize.minRows);
          textareaRef.value.style.minHeight = minHeight + "px";
        }
      } else {
        textareaRef.value.style.maxHeight = "";
        textareaRef.value.style.minHeight = "";
      }
    };
    const keydown = (e) => {
      if (props.disabled) {
        return;
      }
      emits("keydown", e, realValue.value);
    };
    const keyup = (e) => {
      if (props.disabled) {
        return;
      }
      emits("keyup", e, realValue.value);
    };
    const inputFocus = () => {
      if (props.disabled) {
        return;
      }
      focus.value = true;
      emits("focus", realValue.value);
    };
    const inputBlur = () => {
      if (props.disabled) {
        return;
      }
      setTimeout(() => {
        focus.value = false;
        emits("blur", realValue.value);
      }, 200);
    };
    const input2 = () => {
      if (props.disabled) {
        return;
      }
      emits("input", realValue.value);
    };
    const leftClick = () => {
      if (props.disabled) {
        return;
      }
      emits("left-click", realValue.value);
    };
    const rightClick = () => {
      if (props.disabled) {
        return;
      }
      emits("right-click", realValue.value);
    };
    const doClear = () => {
      if (props.disabled) {
        return;
      }
      if (!props.clearable) {
        return;
      }
      setTimeout(() => {
        realValue.value = "";
        let el = inputRef.value || textareaRef.value;
        el.focus();
        emits("clear", realValue.value);
      }, 210);
    };
    onMounted(() => {
      if (textareaRef.value) {
        setMaxMinHeight();
        if (props.autosize == true || obj.common.isObject(props.autosize)) {
          autosizeSet();
        }
      }
    });
    watch(
      () => realValue.value,
      () => {
        if (textareaRef.value && (props.autosize == true || obj.common.isObject(props.autosize))) {
          autosizeSet();
        }
      }
    );
    watch(
      () => [props.autosize, props.rows],
      () => {
        if (textareaRef.value) {
          setMaxMinHeight();
        }
      }
    );
    watch(
      () => showClear.value,
      () => {
        nextTick(() => {
          if (textareaRef.value && (props.autosize == true || obj.common.isObject(props.autosize))) {
            autosizeSet();
          }
        });
      }
    );
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        disabled: _ctx.disabled || null,
        class: normalizeClass(["mvi-input-container", inputClass.value]),
        "data-type": _ctx.type
      }, [
        showLeft.value ? (openBlock(), createElementBlock("div", {
          key: 0,
          onClick: leftClick,
          class: "mvi-input-left"
        }, [
          _ctx.$slots.left ? renderSlot(_ctx.$slots, "left", { key: 0 }, void 0, true) : (openBlock(), createBlock(unref(Icon), {
            key: 1,
            type: parseIcon.value(_ctx.left).type,
            url: parseIcon.value(_ctx.left).url,
            spin: parseIcon.value(_ctx.left).spin,
            size: parseIcon.value(_ctx.left).size,
            color: parseIcon.value(_ctx.left).color
          }, null, 8, ["type", "url", "spin", "size", "color"]))
        ])) : createCommentVNode("", true),
        _ctx.label ? (openBlock(), createElementBlock("div", {
          key: 1,
          class: "mvi-input-label",
          style: normalizeStyle(labelStyle.value)
        }, [
          createElementVNode("span", {
            textContent: toDisplayString(_ctx.label)
          }, null, 8, _hoisted_2$B)
        ], 4)) : createCommentVNode("", true),
        _ctx.type == "textarea" ? withDirectives((openBlock(), createElementBlock("textarea", {
          key: 2,
          placeholder: _ctx.placeholder,
          maxlength: _ctx.maxlength,
          disabled: _ctx.disabled,
          readonly: _ctx.readonly,
          autofocus: _ctx.autofocus,
          class: "mvi-textarea",
          "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => realValue.value = $event),
          onInput: input2,
          ref_key: "textareaRef",
          ref: textareaRef,
          rows: rowsFilter.value,
          name: _ctx.name,
          style: normalizeStyle(inputStyle.value),
          onFocus: inputFocus,
          onBlur: inputBlur,
          autocomplete: "off",
          onKeydown: keydown,
          onKeyup: keyup
        }, null, 44, _hoisted_3$v)), [
          [vModelText, realValue.value]
        ]) : withDirectives((openBlock(), createElementBlock("input", {
          key: 3,
          type: cmpType.value,
          inputmode: _ctx.inputMode,
          placeholder: _ctx.placeholder,
          maxlength: _ctx.maxlength,
          disabled: _ctx.disabled,
          readonly: _ctx.readonly,
          autofocus: _ctx.autofocus,
          class: "mvi-input",
          "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => realValue.value = $event),
          onInput: input2,
          ref_key: "inputRef",
          ref: inputRef,
          name: _ctx.name,
          style: normalizeStyle(inputStyle.value),
          onFocus: inputFocus,
          onBlur: inputBlur,
          autocomplete: "off",
          onKeydown: keydown,
          onKeyup: keyup
        }, null, 44, _hoisted_4$n)), [
          [vModelDynamic, realValue.value]
        ]),
        _ctx.clearable ? withDirectives((openBlock(), createElementBlock("div", {
          key: 4,
          onClick: doClear,
          class: "mvi-input-clear"
        }, [
          createVNode(unref(Icon), { type: "times-o" })
        ], 512)), [
          [vShow, showClear.value]
        ]) : createCommentVNode("", true),
        showRight.value ? (openBlock(), createElementBlock("div", {
          key: 5,
          onClick: rightClick,
          class: "mvi-input-right"
        }, [
          _ctx.$slots.right ? renderSlot(_ctx.$slots, "right", { key: 0 }, void 0, true) : (openBlock(), createBlock(unref(Icon), {
            key: 1,
            type: parseIcon.value(_ctx.right).type,
            url: parseIcon.value(_ctx.right).url,
            spin: parseIcon.value(_ctx.right).spin,
            size: parseIcon.value(_ctx.right).size,
            color: parseIcon.value(_ctx.right).color
          }, null, 8, ["type", "url", "spin", "size", "color"]))
        ])) : createCommentVNode("", true),
        _ctx.showWordLimit && _ctx.maxlength > 0 ? (openBlock(), createElementBlock("div", _hoisted_5$e, toDisplayString(realValue.value.length) + "/" + toDisplayString(_ctx.maxlength), 1)) : createCommentVNode("", true)
      ], 10, _hoisted_1$L);
    };
  }
});
const input = /* @__PURE__ */ _export_sfc(_sfc_main$Z, [["__scopeId", "data-v-c3814540"]]);
const Input = withInstall(input);
const LoadingProps = {
  //类型
  type: {
    type: String,
    default: "default",
    validator(value) {
      return ["default", "circle", "dots", "spin", "transfer"].includes(value);
    }
  },
  //颜色
  color: {
    type: String,
    default: null
  },
  //尺寸
  size: {
    type: String,
    default: "0.6rem"
  }
};
const _withScopeId$4 = (n) => (pushScopeId("data-v-3fd1dc78"), n = n(), popScopeId(), n);
const _hoisted_1$K = { class: "mvi-loading" };
const _hoisted_2$A = ["width", "height", "stroke"];
const _hoisted_3$u = /* @__PURE__ */ createStaticVNode('<g fill="none" fill-rule="evenodd" data-v-3fd1dc78><g transform="translate(1 1)" stroke-width="2" data-v-3fd1dc78><circle stroke-opacity=".2" cx="18" cy="18" r="18" data-v-3fd1dc78></circle><path d="M36 18c0-9.94-8.06-18-18-18" data-v-3fd1dc78><animateTransform attributeName="transform" type="rotate" from="0 18 18" to="360 18 18" dur="1s" repeatCount="indefinite" data-v-3fd1dc78></animateTransform></path></g></g>', 1);
const _hoisted_4$m = [
  _hoisted_3$u
];
const _hoisted_5$d = ["width", "height", "fill"];
const _hoisted_6$b = /* @__PURE__ */ createStaticVNode('<circle cx="30" cy="30" r="30" data-v-3fd1dc78><animate attributeName="r" from="30" to="30" begin="0s" dur="0.8s" values="30;18;30" calcMode="linear" repeatCount="indefinite" data-v-3fd1dc78></animate><animate attributeName="fill-opacity" from="1" to="1" begin="0s" dur="0.8s" values="1;.5;1" calcMode="linear" repeatCount="indefinite" data-v-3fd1dc78></animate></circle><circle cx="120" cy="30" r="18" fill-opacity="0.3" data-v-3fd1dc78><animate attributeName="r" from="18" to="18" begin="0s" dur="0.8s" values="18;30;18" calcMode="linear" repeatCount="indefinite" data-v-3fd1dc78></animate><animate attributeName="fill-opacity" from="0.5" to="0.5" begin="0s" dur="0.8s6s" values=".5;1;.5" calcMode="linear" repeatCount="indefinite" data-v-3fd1dc78></animate></circle><circle cx="210" cy="30" r="30" data-v-3fd1dc78><animate attributeName="r" from="30" to="30" begin="0s" dur="0.8s" values="30;18;30" calcMode="linear" repeatCount="indefinite" data-v-3fd1dc78></animate><animate attributeName="fill-opacity" from="1" to="1" begin="0s" dur="0.8s" values="1;.5;1" calcMode="linear" repeatCount="indefinite" data-v-3fd1dc78></animate></circle>', 3);
const _hoisted_9$5 = [
  _hoisted_6$b
];
const _hoisted_10$2 = ["width", "height"];
const _hoisted_11$2 = ["id"];
const _hoisted_12$2 = ["stop-color"];
const _hoisted_13$2 = ["stop-color"];
const _hoisted_14$1 = ["stop-color"];
const _hoisted_15 = {
  fill: "none",
  "fill-rule": "evenodd"
};
const _hoisted_16 = { transform: "translate(1 1)" };
const _hoisted_17 = ["stroke"];
const _hoisted_18 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ createElementVNode("animateTransform", {
  attributeName: "transform",
  type: "rotate",
  from: "0 18 18",
  to: "360 18 18",
  dur: "0.9s",
  repeatCount: "indefinite"
}, null, -1));
const _hoisted_19 = [
  _hoisted_18
];
const _hoisted_20 = ["fill"];
const _hoisted_21 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ createElementVNode("animateTransform", {
  attributeName: "transform",
  type: "rotate",
  from: "0 18 18",
  to: "360 18 18",
  dur: "0.9s",
  repeatCount: "indefinite"
}, null, -1));
const _hoisted_22 = [
  _hoisted_21
];
const _hoisted_23 = ["width", "height"];
const _hoisted_24 = ["fill"];
const _hoisted_25 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ createElementVNode("animate", {
  attributeName: "opacity",
  attributeType: "XML",
  values: "0.2; 1; .2",
  begin: "0s",
  dur: "0.6s",
  repeatCount: "indefinite"
}, null, -1));
const _hoisted_26 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ createElementVNode("animate", {
  attributeName: "height",
  attributeType: "XML",
  values: "10; 20; 10",
  begin: "0s",
  dur: "0.6s",
  repeatCount: "indefinite"
}, null, -1));
const _hoisted_27 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ createElementVNode("animate", {
  attributeName: "y",
  attributeType: "XML",
  values: "10; 5; 10",
  begin: "0s",
  dur: "0.6s",
  repeatCount: "indefinite"
}, null, -1));
const _hoisted_28 = [
  _hoisted_25,
  _hoisted_26,
  _hoisted_27
];
const _hoisted_29 = ["fill"];
const _hoisted_30 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ createElementVNode("animate", {
  attributeName: "opacity",
  attributeType: "XML",
  values: "0.2; 1; .2",
  begin: "0.15s",
  dur: "0.6s",
  repeatCount: "indefinite"
}, null, -1));
const _hoisted_31 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ createElementVNode("animate", {
  attributeName: "height",
  attributeType: "XML",
  values: "10; 20; 10",
  begin: "0.15s",
  dur: "0.6s",
  repeatCount: "indefinite"
}, null, -1));
const _hoisted_32 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ createElementVNode("animate", {
  attributeName: "y",
  attributeType: "XML",
  values: "10; 5; 10",
  begin: "0.15s",
  dur: "0.6s",
  repeatCount: "indefinite"
}, null, -1));
const _hoisted_33 = [
  _hoisted_30,
  _hoisted_31,
  _hoisted_32
];
const _hoisted_34 = ["fill"];
const _hoisted_35 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ createElementVNode("animate", {
  attributeName: "opacity",
  attributeType: "XML",
  values: "0.2; 1; .2",
  begin: "0.3s",
  dur: "0.6s",
  repeatCount: "indefinite"
}, null, -1));
const _hoisted_36 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ createElementVNode("animate", {
  attributeName: "height",
  attributeType: "XML",
  values: "10; 20; 10",
  begin: "0.3s",
  dur: "0.6s",
  repeatCount: "indefinite"
}, null, -1));
const _hoisted_37 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ createElementVNode("animate", {
  attributeName: "y",
  attributeType: "XML",
  values: "10; 5; 10",
  begin: "0.3s",
  dur: "0.6s",
  repeatCount: "indefinite"
}, null, -1));
const _hoisted_38 = [
  _hoisted_35,
  _hoisted_36,
  _hoisted_37
];
const _sfc_main$Y = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-loading"
  },
  __name: "loading",
  props: LoadingProps,
  setup(__props) {
    const props = __props;
    const instance = getCurrentInstance();
    const observe = ref(null);
    const innerColor = ref("");
    const loadingStyle = computed(() => {
      let style = {};
      style.background = innerColor.value;
      style.width = "calc(" + props.size + "/20)";
      style.height = "calc(" + props.size + "/4)";
      style.transformOrigin = "calc(" + props.size + "/40) calc(" + props.size + "/2)";
      style.webkitTransformOrigin = "calc(" + props.size + "/40) calc(" + props.size + "/2)";
      return style;
    });
    watch(
      () => props.color,
      (newVal) => {
        innerColor.value = newVal || (isDark() ? "#4a4a4a" : "#bbb");
      },
      {
        immediate: true
      }
    );
    onMounted(() => {
      observe.value = new Observe$1(document.documentElement, {
        attributes: true,
        childList: false,
        subtree: false,
        attributeNames: ["data-mvi-dark"],
        attributesChange: () => {
          innerColor.value = props.color || (isDark() ? "#4a4a4a" : "#bbb");
        }
      });
      observe.value.init();
    });
    onBeforeUnmount(() => {
      var _a;
      (_a = observe.value) == null ? void 0 : _a.destroy();
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", _hoisted_1$K, [
        _ctx.type == "default" ? (openBlock(), createElementBlock("div", {
          key: 0,
          class: "mvi-loading-default",
          style: normalizeStyle({ width: _ctx.size, height: _ctx.size })
        }, [
          (openBlock(true), createElementBlock(Fragment, null, renderList(new Array(12), () => {
            return openBlock(), createElementBlock("div", {
              style: normalizeStyle(loadingStyle.value)
            }, null, 4);
          }), 256))
        ], 4)) : _ctx.type == "circle" ? (openBlock(), createElementBlock("svg", {
          key: 1,
          xmlns: "https://www.w3.org/2000/svg",
          width: _ctx.size,
          height: _ctx.size,
          viewBox: "0 0 38 38",
          stroke: innerColor.value
        }, _hoisted_4$m, 8, _hoisted_2$A)) : _ctx.type == "dots" ? (openBlock(), createElementBlock("svg", {
          key: 2,
          xmlns: "https://www.w3.org/2000/svg",
          width: _ctx.size,
          height: _ctx.size,
          viewBox: "0 0 240 60",
          fill: innerColor.value
        }, _hoisted_9$5, 8, _hoisted_5$d)) : _ctx.type == "spin" ? (openBlock(), createElementBlock("svg", {
          key: 3,
          xmlns: "https://www.w3.org/2000/svg",
          width: _ctx.size,
          height: _ctx.size,
          viewBox: "0 0 38 38"
        }, [
          createElementVNode("defs", null, [
            createElementVNode("linearGradient", {
              x1: "8.042%",
              y1: "0%",
              x2: "65.682%",
              y2: "23.865%",
              id: `spin_${unref(instance).uid}`
            }, [
              createElementVNode("stop", {
                "stop-color": innerColor.value,
                "stop-opacity": "0",
                offset: "0%"
              }, null, 8, _hoisted_12$2),
              createElementVNode("stop", {
                "stop-color": innerColor.value,
                "stop-opacity": ".631",
                offset: "63.146%"
              }, null, 8, _hoisted_13$2),
              createElementVNode("stop", {
                "stop-color": innerColor.value,
                offset: "100%"
              }, null, 8, _hoisted_14$1)
            ], 8, _hoisted_11$2)
          ]),
          createElementVNode("g", _hoisted_15, [
            createElementVNode("g", _hoisted_16, [
              createElementVNode("path", {
                d: "M36 18c0-9.94-8.06-18-18-18",
                stroke: `url(#spin_${unref(instance).uid})`,
                "stroke-width": "2"
              }, _hoisted_19, 8, _hoisted_17),
              createElementVNode("circle", {
                fill: innerColor.value,
                cx: "36",
                cy: "18",
                r: "1"
              }, _hoisted_22, 8, _hoisted_20)
            ])
          ])
        ], 8, _hoisted_10$2)) : _ctx.type == "transfer" ? (openBlock(), createElementBlock("svg", {
          key: 4,
          xmlns: "http://www.w3.org/2000/svg",
          width: _ctx.size,
          height: _ctx.size,
          viewBox: "0 0 25 30"
        }, [
          createElementVNode("rect", {
            x: "0",
            y: "10",
            width: "5",
            height: "10",
            fill: innerColor.value,
            opacity: "0.2"
          }, _hoisted_28, 8, _hoisted_24),
          createElementVNode("rect", {
            x: "10",
            y: "10",
            width: "5",
            height: "10",
            fill: innerColor.value,
            opacity: "0.2"
          }, _hoisted_33, 8, _hoisted_29),
          createElementVNode("rect", {
            x: "20",
            y: "10",
            width: "5",
            height: "10",
            fill: innerColor.value,
            opacity: "0.2"
          }, _hoisted_38, 8, _hoisted_34)
        ], 8, _hoisted_23)) : createCommentVNode("", true)
      ]);
    };
  }
});
const loading = /* @__PURE__ */ _export_sfc(_sfc_main$Y, [["__scopeId", "data-v-3fd1dc78"]]);
const Loading = withInstall(loading);
const LoadingBarProps = {
  //进度条颜色
  color: {
    type: String,
    default: null
  },
  //进度条层级
  zIndex: {
    type: Number,
    default: null
  },
  //进度条移除方法
  __remove: {
    type: Function,
    default: function() {
      return function() {
      };
    }
  },
  //进度条初始化方法
  __init: {
    type: Function,
    default: function() {
      return function() {
      };
    }
  }
};
const _sfc_main$X = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-loading-bar"
  },
  __name: "loading-bar",
  props: LoadingBarProps,
  setup(__props, { expose: __expose }) {
    const instance = getCurrentInstance();
    const props = __props;
    const opacityTime = ref(300);
    const widthEnterTime = ref(4e3);
    const widthLeaveTime = ref(2e3);
    const timer = ref(null);
    const hasTriggerLeave = ref(false);
    const barRef = ref(null);
    const cmpColor = computed(() => {
      if (typeof props.color == "string" && props.color) {
        return props.color;
      }
      return null;
    });
    const cmpZIndex = computed(() => {
      if (obj.number.isNumber(props.zIndex)) {
        return props.zIndex;
      }
      return null;
    });
    const barStyle = computed(() => {
      let style = {};
      if (cmpColor) {
        style.background = cmpColor.value;
      }
      if (cmpZIndex) {
        style.zIndex = cmpZIndex.value;
      }
      return style;
    });
    const addTransition = (type) => {
      if (type == "enter") {
        barRef.value.style.transition = `opacity ${opacityTime.value}ms linear, width ${widthEnterTime.value}ms ease-out`;
      } else if (type == "leave") {
        barRef.value.style.transition = `opacity ${opacityTime.value}ms ${widthLeaveTime.value}ms linear, width ${widthLeaveTime.value}ms ease`;
      }
      barRef.value.offsetWidth;
    };
    const removeTransition = () => {
      barRef.value.style.transition = "";
      barRef.value.offsetWidth;
    };
    const enter = () => {
      removeTransition();
      barRef.value.style.width = "0";
      addTransition("enter");
      barRef.value.style.width = window.innerWidth * 0.9 + "px";
      barRef.value.style.opacity = "1";
    };
    const leave = () => {
      if (hasTriggerLeave.value) {
        return;
      }
      hasTriggerLeave.value = true;
      addTransition("leave");
      barRef.value.style.width = window.innerWidth + "px";
      barRef.value.style.opacity = "0";
      timer.value = setTimeout(() => {
        props.__remove();
      }, widthLeaveTime.value + opacityTime.value);
    };
    onMounted(() => {
      props.__init(instance);
      enter();
    });
    onBeforeUnmount(() => {
      if (timer.value) {
        clearTimeout(timer.value);
        timer.value = null;
      }
    });
    __expose({
      leave
    });
    return (_ctx, _cache) => {
      return openBlock(), createBlock(Teleport, { to: "body" }, [
        createElementVNode("div", {
          class: "mvi-loading-bar",
          ref_key: "barRef",
          ref: barRef,
          style: normalizeStyle(barStyle.value)
        }, null, 4)
      ]);
    };
  }
});
const LoadingBarComponent = /* @__PURE__ */ _export_sfc(_sfc_main$X, [["__scopeId", "data-v-74063300"]]);
const LoadingBar = {
  //初始化参数
  initParams: (options) => {
    let opts = {};
    if (obj.common.isObject(options)) {
      opts.color = options.color;
      opts.zIndex = options.zIndex;
    } else if (typeof options == "string") {
      opts.color = options;
    }
    return opts;
  },
  //安装函数
  install: (app) => {
    app.config.globalProperties.$showLoadingBar = LoadingBar.showLoadingBar;
    app.provide("$showLoadingBar", LoadingBar.showLoadingBar);
    app.config.globalProperties.$hideLoadingBar = LoadingBar.hideLoadingBar;
    app.provide("$hideLoadingBar", LoadingBar.hideLoadingBar);
  },
  //显示加载进度条
  showLoadingBar: (options) => {
    return new Promise((resolve) => {
      if (LoadingBar.$el && LoadingBar.$instance) {
        LoadingBar.$instance.unmount();
        LoadingBar.$el.remove();
      }
      let opts = LoadingBar.initParams(options);
      let mountNode = obj.element.string2dom("<div></div>");
      document.body.appendChild(mountNode);
      const instance = createApp(LoadingBarComponent, {
        ...opts,
        __init: (vm) => {
          LoadingBar.$vm = vm;
        },
        __remove: () => {
          instance.unmount();
          mountNode.remove();
          resolve();
        }
      });
      instance.mount(mountNode);
      LoadingBar.$el = mountNode;
      LoadingBar.$instance = instance;
    });
  },
  //关闭加载进度条
  hideLoadingBar: () => {
    if (LoadingBar.$vm) {
      LoadingBar.$vm.exposed.leave();
    }
  }
};
const MsgboxProps = {
  //提示文本
  message: {
    type: String,
    default: null
  },
  //动画效果
  animation: {
    type: String,
    default: null
  },
  //自动关闭的时间
  timeout: {
    type: Number,
    default: null
  },
  //弹窗z-index
  zIndex: {
    type: Number,
    default: null
  },
  //弹窗背景色
  background: {
    type: String,
    default: null
  },
  //弹窗字体颜色
  color: {
    type: String,
    default: null
  },
  //移除方法
  __remove: {
    type: Function,
    default: function() {
      return function() {
      };
    }
  }
};
const _hoisted_1$J = ["textContent"];
const _sfc_main$W = /* @__PURE__ */ defineComponent({
  ...{
    inheritAttrs: false,
    name: "m-msgbox"
  },
  __name: "msgbox",
  props: MsgboxProps,
  setup(__props) {
    const props = __props;
    const show = ref(false);
    const cpmMessage = computed(() => {
      if (typeof props.message == "string") {
        return props.message;
      }
      if (obj.common.isObject(props.message)) {
        return JSON.stringify(props.message);
      }
      return String(props.message);
    });
    const cmpAnimation = computed(() => {
      if (typeof props.animation == "string" && props.animation) {
        return props.animation;
      }
      return "fade";
    });
    const cmpTimeout = computed(() => {
      if (obj.number.isNumber(props.timeout)) {
        return props.timeout;
      }
      return 1500;
    });
    const cmpZIndex = computed(() => {
      if (obj.number.isNumber(props.zIndex)) {
        return props.zIndex;
      }
      return 1100;
    });
    const cmpBackground = computed(() => {
      if (typeof props.background == "string" && props.background) {
        return props.background;
      }
      return null;
    });
    const cmpColor = computed(() => {
      if (typeof props.color == "string" && props.color) {
        return props.color;
      }
      return null;
    });
    const msgboxStyle = computed(() => {
      let style = {
        zIndex: cmpZIndex.value
      };
      if (cmpBackground.value) {
        style.backgroundColor = cmpBackground.value;
      }
      if (cmpColor.value) {
        style.color = cmpColor.value;
      }
      return style;
    });
    const afterEnter = () => {
      if (cmpTimeout.value > 0) {
        setTimeout(() => {
          show.value = false;
        }, cmpTimeout.value);
      }
    };
    const afterLeave = () => {
      props.__remove();
    };
    onMounted(() => {
      show.value = true;
    });
    return (_ctx, _cache) => {
      return openBlock(), createBlock(Teleport, { to: "body" }, [
        createVNode(Transition, {
          name: "mvi-msgbox-" + cmpAnimation.value,
          onAfterEnter: afterEnter,
          onAfterLeave: afterLeave
        }, {
          default: withCtx(() => [
            withDirectives(createElementVNode("div", mergeProps(_ctx.$attrs, {
              class: ["mvi-msgbox", { "mvi-msgbox-translate": cmpAnimation.value == "translate" }],
              textContent: toDisplayString(cpmMessage.value),
              style: msgboxStyle.value
            }), null, 16, _hoisted_1$J), [
              [vShow, show.value]
            ])
          ]),
          _: 1
        }, 8, ["name"])
      ]);
    };
  }
});
const MsgboxComponent = /* @__PURE__ */ _export_sfc(_sfc_main$W, [["__scopeId", "data-v-efa77df3"]]);
const Msgbox = {
  //初始化参数
  initParams: (options) => {
    let opts = {};
    if (obj.common.isObject(options)) {
      opts.message = options.message;
      opts.timeout = options.timeout;
      opts.animation = options.animation;
      opts.zIndex = options.zIndex;
      opts.color = options.color;
      opts.background = options.background;
    } else {
      opts.message = options;
    }
    return opts;
  },
  //安装函数
  install: (app) => {
    app.config.globalProperties.$msgbox = Msgbox.msgbox;
    app.provide("$msgbox", Msgbox.msgbox);
  },
  //弹窗调用
  msgbox: (options) => {
    return new Promise((resolve) => {
      let opts = Msgbox.initParams(options);
      let mountNode = obj.element.string2dom("<div></div>");
      document.body.appendChild(mountNode);
      const instance = createApp(MsgboxComponent, {
        ...opts,
        __remove: () => {
          instance.unmount();
          mountNode.remove();
          resolve();
        }
      });
      instance.mount(mountNode);
    });
  }
};
const DividerProps = {
  //是否使用虚线
  dashed: {
    type: Boolean,
    default: false
  },
  //线颜色
  color: {
    type: String,
    default: null
  }
};
const _hoisted_1$I = {
  key: 0,
  class: "mvi-divider-center"
};
const _sfc_main$V = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-divider"
  },
  __name: "divider",
  props: DividerProps,
  setup(__props) {
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["mvi-divider", { dashed: _ctx.dashed }])
      }, [
        createElementVNode("div", {
          class: "mvi-divider-left",
          style: normalizeStyle({ borderColor: _ctx.color || "" })
        }, null, 4),
        _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_1$I, [
          renderSlot(_ctx.$slots, "default", {}, void 0, true)
        ])) : createCommentVNode("", true),
        createElementVNode("div", {
          class: "mvi-divider-right",
          style: normalizeStyle({ borderColor: _ctx.color || "" })
        }, null, 4)
      ], 2);
    };
  }
});
const divider = /* @__PURE__ */ _export_sfc(_sfc_main$V, [["__scopeId", "data-v-401646bb"]]);
const Divider = withInstall(divider);
const CellProps = {
  //左侧图标
  icon: {
    type: [String, Object],
    default: null
  },
  //标题
  title: {
    type: String,
    default: null
  },
  //内容
  content: {
    type: String,
    default: null
  },
  //描述文本
  label: {
    type: String,
    default: null
  },
  //是否显示下边框
  border: {
    type: Boolean,
    default: null
  },
  //右侧图标
  arrow: {
    type: [String, Object],
    default: null
  },
  //是否显示点击态
  active: {
    type: Boolean,
    default: null
  },
  //是否对描述文本内容进行行数限制
  ellipsis: {
    type: [Boolean, Number],
    default: null
  },
  //标题和内容超出一行是否省略
  noWrap: {
    type: Boolean,
    default: false
  }
};
const _hoisted_1$H = { class: "mvi-cell-item" };
const _hoisted_2$z = ["textContent"];
const _hoisted_3$t = ["textContent"];
const _hoisted_4$l = ["textContent"];
const _sfc_main$U = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-cell"
  },
  __name: "cell",
  props: CellProps,
  setup(__props) {
    const cellGroup2 = inject("cellGroup", null);
    const props = __props;
    const parseIcon = computed(() => {
      return (params) => {
        let icon2 = {
          spin: false,
          type: "",
          url: "",
          color: "",
          size: ""
        };
        if (obj.common.isObject(params)) {
          if (typeof params.spin == "boolean") {
            icon2.spin = params.spin;
          }
          if (typeof params.type == "string") {
            icon2.type = params.type;
          }
          if (typeof params.url == "string") {
            icon2.url = params.url;
          }
          if (typeof params.color == "string") {
            icon2.color = params.color;
          }
          if (typeof params.size == "string") {
            icon2.size = params.size;
          }
        } else if (typeof params == "string") {
          icon2.type = params;
        }
        return icon2;
      };
    });
    const cmpActive = computed(() => {
      if (typeof props.active == "boolean") {
        return props.active;
      }
      if (cellGroup2 && cellGroup2.type.name == "m-cell-group" && typeof cellGroup2.props.active == "boolean") {
        return cellGroup2.props.active;
      }
      return true;
    });
    const cmpBorder = computed(() => {
      if (typeof props.border == "boolean") {
        return props.border;
      }
      if (cellGroup2 && cellGroup2.type.name == "m-cell-group" && typeof cellGroup2.props.border == "boolean") {
        return cellGroup2.props.border;
      }
      return false;
    });
    const labelTextStyle = computed(() => {
      let style = {};
      if (props.ellipsis) {
        style.display = "-webkit-box";
        style.textOverflow = "ellipsis";
        style.webkitBoxOrient = "vertical";
        style.overflow = "hidden";
        if (typeof props.ellipsis == "boolean") {
          style.webkitLineClamp = 3;
        } else {
          style.webkitLineClamp = props.ellipsis;
        }
      }
      return style;
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["mvi-cell", { border: cmpBorder.value, active: cmpActive.value }])
      }, [
        createElementVNode("div", _hoisted_1$H, [
          parseIcon.value(_ctx.icon).type || parseIcon.value(_ctx.icon).url ? (openBlock(), createBlock(unref(Icon), {
            key: 0,
            class: "mvi-cell-icon",
            type: parseIcon.value(_ctx.icon).type,
            url: parseIcon.value(_ctx.icon).url,
            spin: parseIcon.value(_ctx.icon).spin,
            size: parseIcon.value(_ctx.icon).size,
            color: parseIcon.value(_ctx.icon).color
          }, null, 8, ["type", "url", "spin", "size", "color"])) : createCommentVNode("", true),
          createElementVNode("div", {
            class: normalizeClass(["mvi-cell-title", { nowrap: _ctx.noWrap }])
          }, [
            _ctx.$slots.title ? renderSlot(_ctx.$slots, "title", { key: 0 }, void 0, true) : (openBlock(), createElementBlock("span", {
              key: 1,
              textContent: toDisplayString(_ctx.title)
            }, null, 8, _hoisted_2$z))
          ], 2),
          _ctx.$slots.content || _ctx.content ? (openBlock(), createElementBlock("div", {
            key: 1,
            class: normalizeClass(["mvi-cell-content", { nowrap: _ctx.noWrap }])
          }, [
            _ctx.$slots.content ? renderSlot(_ctx.$slots, "content", { key: 0 }, void 0, true) : _ctx.content ? (openBlock(), createElementBlock("span", {
              key: 1,
              textContent: toDisplayString(_ctx.content)
            }, null, 8, _hoisted_3$t)) : createCommentVNode("", true)
          ], 2)) : createCommentVNode("", true),
          parseIcon.value(_ctx.arrow).type || parseIcon.value(_ctx.arrow).url ? (openBlock(), createBlock(unref(Icon), {
            key: 2,
            class: "mvi-cell-arrow",
            type: parseIcon.value(_ctx.arrow).type,
            url: parseIcon.value(_ctx.arrow).url,
            spin: parseIcon.value(_ctx.arrow).spin,
            size: parseIcon.value(_ctx.arrow).size,
            color: parseIcon.value(_ctx.arrow).color
          }, null, 8, ["type", "url", "spin", "size", "color"])) : createCommentVNode("", true)
        ]),
        _ctx.label || _ctx.$slots.label ? (openBlock(), createElementBlock("div", {
          key: 0,
          class: "mvi-cell-label",
          style: normalizeStyle(labelTextStyle.value)
        }, [
          _ctx.$slots.label ? renderSlot(_ctx.$slots, "label", { key: 0 }, void 0, true) : _ctx.label ? (openBlock(), createElementBlock("span", {
            key: 1,
            textContent: toDisplayString(_ctx.label)
          }, null, 8, _hoisted_4$l)) : createCommentVNode("", true)
        ], 4)) : createCommentVNode("", true)
      ], 2);
    };
  }
});
const cell = /* @__PURE__ */ _export_sfc(_sfc_main$U, [["__scopeId", "data-v-bc4f5700"]]);
const Cell = withInstall(cell);
const CellGroupProps = {
  //单元格组标题
  title: {
    type: String,
    default: null
  },
  //下边框
  border: {
    type: Boolean,
    default: true
  },
  //是否显示点击态
  active: {
    type: Boolean,
    default: true
  }
};
const _hoisted_1$G = ["textContent"];
const _sfc_main$T = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-cell-group"
  },
  __name: "cell-group",
  props: CellGroupProps,
  setup(__props) {
    const instance = getCurrentInstance();
    componentIsMatch(instance, "m-cell", ["CellGroup", "Cell"]);
    provide("cellGroup", instance);
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["mvi-cell-group", _ctx.border ? "border" : ""])
      }, [
        _ctx.title ? (openBlock(), createElementBlock("div", {
          key: 0,
          class: "mvi-cell-group-title",
          textContent: toDisplayString(_ctx.title)
        }, null, 8, _hoisted_1$G)) : createCommentVNode("", true),
        renderSlot(_ctx.$slots, "default", {}, void 0, true)
      ], 2);
    };
  }
});
const cellGroup = /* @__PURE__ */ _export_sfc(_sfc_main$T, [["__scopeId", "data-v-1f8bf49d"]]);
const CellGroup = withInstall(cellGroup);
const CheckboxProps = {
  //是否禁用
  disabled: {
    type: Boolean,
    default: false
  },
  //是否选中
  modelValue: {
    type: [Boolean, Array],
    default: false
  },
  //label文字
  label: {
    type: String,
    default: null
  },
  //值
  value: {
    type: [Object, Number, String, Array],
    default: ""
  },
  //是否圆形
  round: {
    type: Boolean,
    default: false
  },
  //原生name属性
  name: {
    type: String,
    default: null
  },
  //文字位置
  placement: {
    type: String,
    default: "right",
    validator(value) {
      return ["left", "right"].includes(value);
    }
  },
  //大小
  size: {
    type: String,
    default: null
  },
  //主题颜色
  color: {
    type: String,
    default: null
  }
};
const _hoisted_1$F = ["disabled"];
const _hoisted_2$y = ["data-placement", "textContent"];
const _hoisted_3$s = ["value", "disabled", "checked", "name"];
const _hoisted_4$k = ["data-placement", "textContent"];
const _sfc_main$S = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-checkbox"
  },
  __name: "checkbox",
  props: CheckboxProps,
  emits: ["update:modelValue", "change"],
  setup(__props, { emit: __emit }) {
    const props = __props;
    const emits = __emit;
    const check = computed(() => {
      if (typeof props.modelValue == "boolean") {
        return props.modelValue;
      }
      if (Array.isArray(props.modelValue)) {
        return props.modelValue.some((item) => {
          return obj.common.equal(item, props.value);
        });
      }
      return false;
    });
    const itemStyle = computed(() => {
      let style = {};
      if (props.color && check.value && !props.disabled) {
        style.backgroundColor = props.color;
        style.borderColor = props.color;
      }
      if (props.size) {
        style.fontSize = props.size;
      }
      return style;
    });
    const change = (event2) => {
      if (Array.isArray(props.modelValue)) {
        let arr = [...props.modelValue];
        if (event2.target.checked && !check.value) {
          arr.push(props.value);
        } else if (check.value) {
          arr = arr.filter((item) => {
            return !obj.common.equal(item, props.value);
          });
        }
        emits("update:modelValue", arr);
        emits("change", arr);
      } else if (typeof props.modelValue == "boolean") {
        emits("update:modelValue", event2.target.checked);
        emits("change", event2.target.checked);
      }
    };
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("label", {
        class: "mvi-checkbox",
        disabled: _ctx.disabled || null
      }, [
        _ctx.placement == "left" && _ctx.label ? (openBlock(), createElementBlock("span", {
          key: 0,
          class: "mvi-checkbox-label",
          "data-placement": _ctx.placement,
          textContent: toDisplayString(_ctx.label)
        }, null, 8, _hoisted_2$y)) : createCommentVNode("", true),
        createElementVNode("input", {
          onChange: change,
          value: _ctx.value,
          disabled: _ctx.disabled,
          checked: check.value,
          type: "checkbox",
          name: _ctx.name
        }, null, 40, _hoisted_3$s),
        createElementVNode("span", {
          class: normalizeClass(["mvi-checkbox-item", { check: check.value, round: _ctx.round }]),
          style: normalizeStyle(itemStyle.value)
        }, [
          createVNode(unref(Icon), {
            type: "success",
            style: normalizeStyle({ opacity: check.value ? "" : 0 })
          }, null, 8, ["style"])
        ], 6),
        _ctx.placement == "right" && _ctx.label ? (openBlock(), createElementBlock("span", {
          key: 1,
          class: "mvi-checkbox-label",
          "data-placement": _ctx.placement,
          textContent: toDisplayString(_ctx.label)
        }, null, 8, _hoisted_4$k)) : createCommentVNode("", true)
      ], 8, _hoisted_1$F);
    };
  }
});
const checkbox = /* @__PURE__ */ _export_sfc(_sfc_main$S, [["__scopeId", "data-v-eacd1f4b"]]);
const Checkbox = withInstall(checkbox);
const RadioProps = {
  //是否禁用
  disabled: {
    type: Boolean,
    default: false
  },
  //是否选中
  modelValue: {
    type: [Boolean, String, Number, Object],
    default: false
  },
  //label文字
  label: {
    type: String,
    default: null
  },
  //值
  value: {
    type: [Object, Number, String],
    default: ""
  },
  //是否圆形
  round: {
    type: Boolean,
    default: true
  },
  //原生name属性
  name: {
    type: String,
    default: null
  },
  //文字位置
  placement: {
    type: String,
    default: "right",
    validator(value) {
      return ["left", "right"].includes(value);
    }
  },
  //大小
  size: {
    type: String,
    default: null
  },
  //主题颜色
  color: {
    type: String,
    default: null
  }
};
const _hoisted_1$E = ["disabled"];
const _hoisted_2$x = ["data-placement", "textContent"];
const _hoisted_3$r = ["value", "disabled", "checked", "name"];
const _hoisted_4$j = ["data-placement", "textContent"];
const _sfc_main$R = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-radio"
  },
  __name: "radio",
  props: RadioProps,
  emits: ["update:modelValue", "change"],
  setup(__props, { emit: __emit }) {
    const props = __props;
    const emits = __emit;
    const check = computed(() => {
      if (typeof props.modelValue == "boolean") {
        return props.modelValue;
      }
      return obj.common.equal(props.modelValue, props.value);
    });
    const itemStyle = computed(() => {
      let style = {};
      if (props.color && check.value && !props.disabled) {
        style.backgroundColor = props.color;
        style.borderColor = props.color;
      }
      if (props.size) {
        style.fontSize = props.size;
      }
      return style;
    });
    const change = (event2) => {
      if (typeof props.modelValue == "boolean") {
        emits("update:modelValue", event2.target.checked);
        emits("change", event2.target.checked);
      } else {
        if (event2.target.checked) {
          emits("update:modelValue", props.value);
          emits("change", props.value);
        }
      }
    };
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("label", {
        class: "mvi-radio",
        disabled: _ctx.disabled || null
      }, [
        _ctx.placement == "left" && _ctx.label ? (openBlock(), createElementBlock("span", {
          key: 0,
          class: "mvi-radio-label",
          "data-placement": _ctx.placement,
          textContent: toDisplayString(_ctx.label)
        }, null, 8, _hoisted_2$x)) : createCommentVNode("", true),
        createElementVNode("input", {
          onChange: change,
          value: _ctx.value,
          disabled: _ctx.disabled,
          checked: check.value,
          type: "radio",
          name: _ctx.name
        }, null, 40, _hoisted_3$r),
        createElementVNode("span", {
          class: normalizeClass(["mvi-radio-item", { check: check.value, round: _ctx.round }]),
          style: normalizeStyle(itemStyle.value)
        }, [
          createVNode(unref(Icon), {
            type: "success",
            style: normalizeStyle({ opacity: check.value ? "" : 0 })
          }, null, 8, ["style"])
        ], 6),
        _ctx.placement == "right" && _ctx.label ? (openBlock(), createElementBlock("span", {
          key: 1,
          class: "mvi-radio-label",
          "data-placement": _ctx.placement,
          textContent: toDisplayString(_ctx.label)
        }, null, 8, _hoisted_4$j)) : createCommentVNode("", true)
      ], 8, _hoisted_1$E);
    };
  }
});
const radio = /* @__PURE__ */ _export_sfc(_sfc_main$R, [["__scopeId", "data-v-dd477585"]]);
const Radio = withInstall(radio);
const SignProps = {
  //签名颜色
  color: {
    type: String,
    default: null
    // '#505050'
  },
  //背景色
  background: {
    type: String,
    default: null
    // '#fff'
  },
  //字体粗细 px值
  width: {
    type: Number,
    default: 0.05
  }
};
const _sfc_main$Q = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-sign"
  },
  __name: "sign",
  props: SignProps,
  setup(__props, { expose: __expose }) {
    const instance = getCurrentInstance();
    const props = __props;
    const drawing = ref(false);
    const inCanvas = ref(false);
    const canvasRef = ref(null);
    const observe = ref(null);
    const innerColor = ref("");
    const innerBackground = ref("");
    const canvasMouseDown = (e) => {
      drawing.value = true;
      inCanvas.value = true;
      const ctx = canvasRef.value.getContext("2d");
      const rect = obj.element.getElementBounding(canvasRef.value);
      ctx.beginPath();
      ctx.moveTo(e.pageX - rect.left, e.pageY - rect.top);
    };
    const canvasMouseMove = (e) => {
      if (drawing.value && inCanvas.value) {
        const ctx = canvasRef.value.getContext("2d");
        const rect = obj.element.getElementBounding(canvasRef.value);
        ctx.lineTo(e.pageX - rect.left, e.pageY - rect.top);
        ctx.strokeStyle = innerColor.value;
        ctx.lineWidth = obj.element.rem2px(props.width);
        ctx.stroke();
      }
    };
    const canvasMouseUp = () => {
      drawing.value = false;
      const ctx = canvasRef.value.getContext("2d");
      ctx.closePath();
    };
    const canvasMouseEnter = (e) => {
      if (drawing.value) {
        inCanvas.value = true;
        const ctx = canvasRef.value.getContext("2d");
        const rect = obj.element.getElementBounding(canvasRef.value);
        ctx.beginPath();
        ctx.moveTo(e.pageX - rect.left, e.pageY - rect.top);
      }
    };
    const canvasMouseLeave = () => {
      if (drawing.value) {
        const ctx = canvasRef.value.getContext("2d");
        ctx.closePath();
        inCanvas.value = false;
      }
    };
    const canvasTouchStart = (e) => {
      const ctx = canvasRef.value.getContext("2d");
      const rect = obj.element.getElementBounding(canvasRef.value);
      ctx.beginPath();
      ctx.moveTo(e.targetTouches[0].pageX - rect.left, e.targetTouches[0].pageY - rect.top);
    };
    const canvasTouchMove = (e) => {
      if (e.cancelable) {
        e.preventDefault();
      }
      const ctx = canvasRef.value.getContext("2d");
      const rect = obj.element.getElementBounding(canvasRef.value);
      ctx.lineTo(e.targetTouches[0].pageX - rect.left, e.targetTouches[0].pageY - rect.top);
      ctx.strokeStyle = innerColor.value;
      ctx.lineWidth = obj.element.rem2px(props.width);
      ctx.stroke();
    };
    const canvasTouchEnd = () => {
      const ctx = canvasRef.value.getContext("2d");
      ctx.closePath();
    };
    const clear = () => {
      const ctx = canvasRef.value.getContext("2d");
      ctx.beginPath();
      ctx.clearRect(0, 0, canvasRef.value.width, canvasRef.value.height);
      ctx.rect(0, 0, canvasRef.value.width, canvasRef.value.height);
      ctx.fillStyle = innerBackground.value;
      ctx.fill();
      ctx.closePath();
    };
    const getImage = () => {
      return canvasRef.value.toDataURL("image/png");
    };
    const init = () => {
      canvasRef.value.setAttribute("width", obj.element.getCssStyle(canvasRef.value, "width"));
      canvasRef.value.setAttribute("height", obj.element.getCssStyle(canvasRef.value, "height"));
      clear();
      obj.event.on(document.documentElement, `mousemove.sign_${instance.uid}`, canvasMouseMove);
      obj.event.on(document.documentElement, `mouseup.sign_${instance.uid}`, canvasMouseUp);
    };
    watch(
      () => props.color,
      (newVal) => {
        innerColor.value = newVal || (isDark() ? "#fff" : "#505050");
      },
      {
        immediate: true
      }
    );
    watch(
      () => props.background,
      (newVal) => {
        innerBackground.value = newVal || (isDark() ? "#1a1a1a" : "#fff");
      },
      {
        immediate: true
      }
    );
    watch(
      () => innerBackground.value,
      () => {
        clear();
      }
    );
    onMounted(() => {
      observe.value = new Observe$1(document.documentElement, {
        attributes: true,
        childList: false,
        subtree: false,
        attributeNames: ["data-mvi-dark"],
        attributesChange: () => {
          innerColor.value = props.color || (isDark() ? "#fff" : "#505050");
          innerBackground.value = props.background || (isDark() ? "#1a1a1a" : "#fff");
        }
      });
      observe.value.init();
      init();
    });
    onBeforeUnmount(() => {
      var _a;
      obj.event.off(document.documentElement, `mousemove.sign_${instance.uid} mouseup.sign_${instance.uid}`);
      (_a = observe.value) == null ? void 0 : _a.destroy();
    });
    __expose({
      getImage,
      clear
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("canvas", {
        class: "mvi-sign",
        ref_key: "canvasRef",
        ref: canvasRef,
        onMousedown: canvasMouseDown,
        onTouchstart: canvasTouchStart,
        onTouchmove: canvasTouchMove,
        onTouchend: canvasTouchEnd,
        onMouseleave: canvasMouseLeave,
        onMouseenter: canvasMouseEnter
      }, null, 544);
    };
  }
});
const sign = /* @__PURE__ */ _export_sfc(_sfc_main$Q, [["__scopeId", "data-v-e08c6951"]]);
const Sign = withInstall(sign);
const RollProps = {
  //滚动一个周期需要的时间
  interval: {
    type: Number,
    default: 5e3
  },
  //滚动方向
  direction: {
    type: String,
    default: "left",
    validator(value) {
      return ["left", "right", "up", "down"].includes(value);
    }
  },
  //是否自动滚动
  autoplay: {
    type: Boolean,
    default: false
  },
  //是否循环滚动
  loop: {
    type: Boolean,
    default: false
  },
  //动画效果
  animation: {
    type: String,
    default: "linear",
    validator(value) {
      return ["linear", "ease", "ease-in", "ease-out", "ease-in-out"].includes(value);
    }
  },
  //是否点击暂停
  clickStop: {
    type: Boolean,
    default: false
  },
  //是否悬浮暂停
  hoverStop: {
    type: Boolean,
    default: false
  },
  //垂直方向滚动时内容是否居中
  center: {
    type: Boolean,
    default: false
  }
};
const _sfc_main$P = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-roll"
  },
  __name: "roll",
  props: RollProps,
  emits: ["play", "stop", "pause"],
  setup(__props, { expose: __expose, emit: __emit }) {
    const props = __props;
    const emits = __emit;
    const timer = ref(null);
    const status = ref(-1);
    const containerRef = ref(null);
    const rollRef = ref(null);
    const rollStyle = computed(() => {
      let obj2 = {};
      if (props.direction == "left") {
        obj2.left = "100%";
        obj2.right = "auto";
      } else if (props.direction == "right") {
        obj2.right = "100%";
        obj2.left = "auto";
      } else if (props.direction == "up") {
        obj2.top = "100%";
        obj2.bottom = "auto";
      } else if (props.direction == "down") {
        obj2.bottom = "100%";
        obj2.top = "auto";
      }
      return obj2;
    });
    const isPaused = computed(() => {
      return status.value == 1;
    });
    const isStopped = computed(() => {
      return status.value == 2;
    });
    const pause = () => {
      if (status.value != 0) {
        return;
      }
      status.value = 1;
      let placement = obj.element.getElementPoint(rollRef.value, containerRef.value);
      rollRef.value.style.transition = "";
      if (timer.value) {
        clearTimeout(timer.value);
        timer.value = null;
      }
      if (props.direction == "left") {
        rollRef.value.style.left = placement.left + "px";
        rollRef.value.style.right = "auto";
      } else if (props.direction == "right") {
        rollRef.value.style.right = placement.right + "px";
        rollRef.value.style.left = "auto";
      } else if (props.direction == "up") {
        rollRef.value.style.top = placement.top + "px";
        rollRef.value.style.bottom = "auto";
      } else if (props.direction == "down") {
        rollRef.value.style.bottom = placement.bottom + "px";
        rollRef.value.style.top = "auto";
      }
      emits("pause");
    };
    const stop = () => {
      if (status.value == 2) {
        return;
      }
      status.value = 2;
      rollRef.value.style.transition = "";
      if (props.direction == "left") {
        rollRef.value.style.left = "100%";
        rollRef.value.style.right = "auto";
      } else if (props.direction == "right") {
        rollRef.value.style.right = "100%";
        rollRef.value.style.left = "auto";
      } else if (props.direction == "up") {
        rollRef.value.style.top = "100%";
        rollRef.value.style.bottom = "auto";
      } else if (props.direction == "down") {
        rollRef.value.style.bottom = "100%";
        rollRef.value.style.top = "auto";
      }
      if (timer.value) {
        clearTimeout(timer.value);
        timer.value = null;
      }
      emits("stop");
    };
    const play = () => {
      if (!rollRef.value) {
        return;
      }
      if (status.value == 0) {
        return;
      }
      status.value = 0;
      let placement = obj.element.getElementPoint(rollRef.value, containerRef.value);
      let interval = 0;
      if (props.direction == "left") {
        interval = Math.round((placement.left + rollRef.value.offsetWidth) / (containerRef.value.offsetWidth + rollRef.value.offsetWidth) * props.interval);
      } else if (props.direction == "right") {
        interval = Math.round((placement.right + rollRef.value.offsetWidth) / (containerRef.value.offsetWidth + rollRef.value.offsetWidth) * props.interval);
      } else if (props.direction == "up") {
        interval = Math.round((placement.top + rollRef.value.offsetHeight) / (containerRef.value.offsetHeight + rollRef.value.offsetHeight) * props.interval);
      } else if (props.direction == "down") {
        interval = Math.round((placement.bottom + rollRef.value.offsetHeight) / (containerRef.value.offsetHeight + rollRef.value.offsetHeight) * props.interval);
      }
      rollRef.value.style.transition = "all " + interval + "ms " + props.animation;
      rollRef.value.offsetWidth;
      if (props.direction == "left") {
        rollRef.value.style.left = -rollRef.value.offsetWidth + "px";
        rollRef.value.style.right = "auto";
      } else if (props.direction == "right") {
        rollRef.value.style.right = -rollRef.value.offsetWidth + "px";
        rollRef.value.style.left = "auto";
      } else if (props.direction == "up") {
        rollRef.value.style.top = -rollRef.value.offsetHeight + "px";
        rollRef.value.style.bottom = "auto";
      } else if (props.direction == "down") {
        rollRef.value.style.bottom = -rollRef.value.offsetHeight + "px";
        rollRef.value.style.top = "auto";
      }
      emits("play");
      timer.value = setTimeout(() => {
        stop();
        if (props.loop) {
          play();
        }
      }, interval);
    };
    const hoverIn = () => {
      if (props.hoverStop) {
        if (status.value == 0) {
          pause();
        }
      }
    };
    const hoverOut = () => {
      if (props.hoverStop) {
        if (status.value == 1) {
          play();
        }
      }
    };
    const clickStopFun = () => {
      if (props.clickStop) {
        if (status.value == 0) {
          pause();
        } else if (status.value == 1) {
          play();
        }
      }
    };
    onMounted(() => {
      containerRef.value.style.height = obj.element.getCssStyle(rollRef.value, "height");
      if (props.autoplay) {
        play();
      }
    });
    onBeforeUnmount(() => {
      stop();
    });
    __expose({
      pause,
      stop,
      play,
      isStopped,
      isPaused
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        onClick: clickStopFun,
        onMouseenter: hoverIn,
        onMouseleave: hoverOut,
        class: "mvi-roll-container",
        ref_key: "containerRef",
        ref: containerRef
      }, [
        createElementVNode("div", {
          class: normalizeClass(["mvi-roll", [_ctx.direction == "left" || _ctx.direction == "right" ? "horizontal" : "vertical", { center: _ctx.center }]]),
          style: normalizeStyle(rollStyle.value),
          ref_key: "rollRef",
          ref: rollRef
        }, [
          renderSlot(_ctx.$slots, "default", {}, void 0, true)
        ], 6)
      ], 544);
    };
  }
});
const roll = /* @__PURE__ */ _export_sfc(_sfc_main$P, [["__scopeId", "data-v-ab6d09f6"]]);
const Roll = withInstall(roll);
const RowProps = {
  //排列方式
  justify: {
    type: String,
    default: "flex-start",
    validator(value) {
      return ["flex-start", "flex-end", "space-around", "space-between"].includes(value);
    }
  },
  //垂直对齐方式
  align: {
    type: String,
    default: "flex-start",
    validator(value) {
      return ["flex-start", "flex-end", "center"].includes(value);
    }
  },
  //渲染标签
  tag: {
    type: String,
    default: "div"
  }
};
const _sfc_main$O = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-row"
  },
  __name: "row",
  props: RowProps,
  setup(__props) {
    const instance = getCurrentInstance();
    componentIsMatch(instance, "m-col", ["Row", "Col"]);
    provide("row", instance);
    const props = __props;
    const Row2 = defineComponent(() => {
      return () => {
        return h(
          props.tag,
          {},
          {
            default: useSlots().default
          }
        );
      };
    });
    return (_ctx, _cache) => {
      return openBlock(), createBlock(unref(Row2), {
        class: "mvi-row",
        style: normalizeStyle({ justifyContent: _ctx.justify, alignItems: _ctx.align })
      }, {
        default: withCtx(() => [
          renderSlot(_ctx.$slots, "default", {}, void 0, true)
        ]),
        _: 3
      }, 8, ["style"]);
    };
  }
});
const row = /* @__PURE__ */ _export_sfc(_sfc_main$O, [["__scopeId", "data-v-cea991ed"]]);
const Row = withInstall(row);
const ColProps = {
  //栅格占据的列数
  span: {
    type: Number,
    default: 24
  },
  //栅格左侧的间隔格数
  offset: {
    type: Number,
    default: 0
  },
  //渲染标签
  tag: {
    type: String,
    default: "div"
  },
  // >=0px 响应式栅格数或者栅格属性对象
  xs: {
    type: [Number, Object],
    default: null
  },
  // >=640px 响应式栅格数或者栅格属性对象
  sm: {
    type: [Number, Object],
    default: null
  },
  // >=992px 响应式栅格数或者栅格属性对象
  md: {
    type: [Number, Object],
    default: null
  },
  // >=1440px 响应式栅格数或者栅格属性对象
  lg: {
    type: [Number, Object],
    default: null
  },
  // >=1920px 响应式栅格数或者栅格属性对象
  xl: {
    type: [Number, Object],
    default: null
  }
};
const _sfc_main$N = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-col"
  },
  __name: "col",
  props: ColProps,
  setup(__props) {
    const row2 = inject("row", null);
    parentIsMatch(ref([]), row2, "m-row", ["Row", "Col"]);
    const props = __props;
    const colClass = computed(() => {
      let cls = [];
      if (props.span) {
        cls.push("mvi-col-" + props.span);
      }
      if (props.offset) {
        cls.push("mvi-col-offset-" + props.offset);
      }
      if (obj.common.isObject(props.xs)) {
        if (obj.number.isNumber(props.xs.span)) {
          cls.push("mvi-col-xs-" + props.xs.span);
        }
        if (obj.number.isNumber(props.xs.offset)) {
          cls.push("mvi-col-offset-xs-" + props.xs.offset);
        }
      } else if (obj.number.isNumber(props.xs)) {
        cls.push("mvi-col-xs-" + props.xs);
      }
      if (obj.common.isObject(props.sm)) {
        if (obj.number.isNumber(props.sm.span)) {
          cls.push("mvi-col-sm-" + props.sm.span);
        }
        if (obj.number.isNumber(props.sm.offset)) {
          cls.push("mvi-col-offset-sm-" + props.sm.offset);
        }
      } else if (obj.number.isNumber(props.sm)) {
        cls.push("mvi-col-sm-" + props.sm);
      }
      if (obj.common.isObject(props.md)) {
        if (obj.number.isNumber(props.md.span)) {
          cls.push("mvi-col-md-" + props.md.span);
        }
        if (obj.number.isNumber(props.md.offset)) {
          cls.push("mvi-col-offset-md-" + props.md.offset);
        }
      } else if (obj.number.isNumber(props.md)) {
        cls.push("mvi-col-md-" + props.md);
      }
      if (obj.common.isObject(props.lg)) {
        if (obj.number.isNumber(props.lg.span)) {
          cls.push("mvi-col-lg-" + props.lg.span);
        }
        if (obj.number.isNumber(props.lg.offset)) {
          cls.push("mvi-col-offset-lg-" + props.lg.offset);
        }
      } else if (obj.number.isNumber(props.lg)) {
        cls.push("mvi-col-lg-" + props.lg);
      }
      if (obj.common.isObject(props.xl)) {
        if (obj.number.isNumber(props.xl.span)) {
          cls.push("mvi-col-xl-" + props.xl.span);
        }
        if (obj.number.isNumber(props.xl.offset)) {
          cls.push("mvi-col-offset-xl-" + props.xl.offset);
        }
      } else if (obj.number.isNumber(props.xl)) {
        cls.push("mvi-col-xl-" + props.xl);
      }
      return cls;
    });
    const Col2 = defineComponent(() => {
      return () => {
        return h(
          props.tag,
          {},
          {
            default: useSlots().default
          }
        );
      };
    });
    return (_ctx, _cache) => {
      return openBlock(), createBlock(unref(Col2), {
        class: normalizeClass(colClass.value)
      }, {
        default: withCtx(() => [
          renderSlot(_ctx.$slots, "default", {}, void 0, true)
        ]),
        _: 3
      }, 8, ["class"]);
    };
  }
});
const col = /* @__PURE__ */ _export_sfc(_sfc_main$N, [["__scopeId", "data-v-872a2bf7"]]);
const Col = withInstall(col);
const AutocompleteProps = {
  //输入框的值
  modelValue: {
    type: String,
    default: ""
  },
  //占位符
  placeholder: {
    type: String,
    default: ""
  },
  //组件大小
  size: {
    type: String,
    default: "medium",
    validator(value) {
      return ["small", "medium", "large"].includes(value);
    }
  },
  //可选值数组
  list: {
    type: Array,
    default: function() {
      return [];
    }
  },
  //激活样式
  activeType: {
    type: String,
    default: "info",
    validator(value) {
      return ["info", "success", "warn", "error", "primary"].includes(value);
    }
  },
  //激活颜色
  activeColor: {
    type: String,
    default: null,
    validator(value) {
      return obj.common.matchingText(value, "hex");
    }
  },
  //过滤方法
  filterMethod: {
    type: [Function, Boolean],
    default: false
  },
  //是否启用清除图标
  clearable: {
    type: Boolean,
    default: false
  },
  //是否禁用
  disabled: {
    type: Boolean,
    default: false
  },
  //layer组件参数
  layerProps: {
    type: Object,
    default: function() {
      return {};
    }
  },
  //提示框最大高度
  height: {
    type: String,
    default: null
  },
  //原生name
  name: {
    type: String,
    default: null
  },
  //左侧图标
  leftIcon: {
    type: [String, Object],
    default: null
  },
  //右侧图标
  rightIcon: {
    type: [String, Object],
    default: null
  },
  //是否圆角
  round: {
    type: Boolean,
    default: false
  },
  //是否方形
  square: {
    type: Boolean,
    default: false
  },
  //对齐方式
  align: {
    type: String,
    default: "left",
    validator(value) {
      return ["left", "right", "center"].includes(value);
    }
  }
};
const _hoisted_1$D = ["data-id", "disabled"];
const _hoisted_2$w = ["placeholder", "name", "disabled"];
const _hoisted_3$q = ["textContent", "onClick"];
const _sfc_main$M = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-autocomplete",
    inheritAttrs: false
  },
  __name: "autocomplete",
  props: AutocompleteProps,
  emits: ["update:modelValue", "focus", "blur", "input", "left-click", "right-click", "select", "clear", "keydown", "keyup"],
  setup(__props, { emit: __emit }) {
    const instance = getCurrentInstance();
    const props = __props;
    const emits = __emit;
    const focus = ref(false);
    const menuRef = ref(null);
    const relateRef = ref(null);
    const layerRef = ref(null);
    const inputRef = ref(null);
    const realValue = computed({
      set: (value) => {
        if (props.modelValue !== value) {
          emits("update:modelValue", value);
        }
      },
      get: () => {
        return props.modelValue;
      }
    });
    const cmpFilter = computed(() => {
      if (typeof props.filterMethod == "function") {
        return props.filterMethod(realValue.value, props.list);
      }
      if (props.filterMethod) {
        return defaultFilter();
      }
      return props.list;
    });
    const show = computed(() => {
      return focus.value && cmpFilter.value.length != 0;
    });
    const parseIcon = computed(() => {
      return (params) => {
        let icon2 = {
          spin: false,
          type: "",
          url: "",
          color: "",
          size: ""
        };
        if (obj.common.isObject(params)) {
          if (typeof params.spin == "boolean") {
            icon2.spin = params.spin;
          }
          if (typeof params.type == "string") {
            icon2.type = params.type;
          }
          if (typeof params.url == "string") {
            icon2.url = params.url;
          }
          if (typeof params.color == "string") {
            icon2.color = params.color;
          }
          if (typeof params.size == "string") {
            icon2.size = params.size;
          }
        } else if (typeof params == "string") {
          icon2.type = params;
        }
        return icon2;
      };
    });
    const showClearIcon = computed(() => {
      if (props.disabled) {
        return false;
      }
      if (realValue.value && focus.value) {
        return true;
      }
      return false;
    });
    const clearStyle = computed(() => {
      let style = {};
      if (parseIcon.value(props.rightIcon).type || parseIcon.value(props.rightIcon).url) {
        style.borderRadius = 0;
      }
      return style;
    });
    const inputStyle = computed(() => {
      let style = {};
      if (parseIcon.value(props.leftIcon).type || parseIcon.value(props.leftIcon).url) {
        style.paddingLeft = 0;
      }
      if (showClearIcon.value && props.clearable || parseIcon.value(props.rightIcon).type || parseIcon.value(props.rightIcon).url) {
        style.paddingRight = 0;
      }
      if (props.align) {
        style.textAlign = props.align;
      }
      return style;
    });
    const relateStyle = computed(() => {
      let style = {};
      if (props.activeColor && focus.value) {
        style.borderColor = props.activeColor;
        const rgb = obj.color.hex2rgb(props.activeColor);
        style.boxShadow = `0 0 0.16rem rgba(${rgb[0]},${rgb[1]},${rgb[2]},0.5)`;
      }
      return style;
    });
    const relateClass = computed(() => {
      let cls = [props.size];
      if (props.activeType && !props.activeColor && focus.value) {
        cls.push(props.activeType);
      }
      if (props.round) {
        cls.push("round");
      } else if (props.square) {
        cls.push("square");
      }
      return cls;
    });
    const layerRealProps = computed(() => {
      return {
        placement: props.layerProps.placement ? props.layerProps.placement : "bottom-start",
        width: props.layerProps.width,
        zIndex: obj.number.isNumber(props.layerProps.zIndex) ? props.layerProps.zIndex : 400,
        offset: props.layerProps.offset ? props.layerProps.offset : "0.1rem",
        animation: props.layerProps.animation,
        timeout: obj.number.isNumber(props.layerProps.timeout) ? props.layerProps.timeout : 200,
        showTriangle: typeof props.layerProps.showTriangle == "boolean" ? props.layerProps.showTriangle : false,
        shadow: typeof props.layerProps.shadow == "boolean" ? props.layerProps.shadow : true,
        border: typeof props.layerProps.border == "boolean" ? props.layerProps.border : false,
        borderColor: props.layerProps.borderColor
      };
    });
    const layerShow = () => {
      if (!layerRealProps.value.width) {
        menuRef.value.style.width = relateRef.value.offsetWidth + "px";
      }
    };
    const rightClick = () => {
      if (props.disabled) {
        return;
      }
      emits("right-click", realValue.value);
    };
    const leftClick = () => {
      if (props.disabled) {
        return;
      }
      emits("left-click", realValue.value);
    };
    const keydown = (e) => {
      if (props.disabled) {
        return;
      }
      emits("keydown", e, realValue.value);
    };
    const keyup = (e) => {
      if (props.disabled) {
        return;
      }
      emits("keyup", e, realValue.value);
    };
    const input2 = () => {
      if (props.disabled) {
        return;
      }
      focus.value = true;
      layerRef.value.update();
      emits("input", realValue.value);
    };
    const inputBlur = () => {
      if (props.disabled) {
        return;
      }
      setTimeout(() => {
        focus.value = false;
        emits("blur", realValue.value);
      }, 200);
    };
    const inputFocus = () => {
      if (props.disabled) {
        return;
      }
      focus.value = true;
      emits("focus", realValue.value);
    };
    const doClear = () => {
      if (props.disabled) {
        return;
      }
      if (!props.clearable) {
        return;
      }
      setTimeout(() => {
        realValue.value = "";
        emits("clear", "");
        inputRef.value.focus();
      }, 210);
    };
    const doSelect = (item) => {
      if (props.disabled) {
        return;
      }
      realValue.value = item;
      emits("select", item);
      focus.value = false;
    };
    const defaultFilter = () => {
      return props.list.filter((item) => {
        return String(item).toLocaleLowerCase().includes(realValue.value.toLocaleLowerCase());
      });
    };
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock(Fragment, null, [
        createElementVNode("div", mergeProps({
          class: ["mvi-autocomplete", relateClass.value],
          style: relateStyle.value,
          "data-id": "mvi-autocomplete-" + unref(instance).uid,
          ref_key: "relateRef",
          ref: relateRef,
          disabled: _ctx.disabled || null
        }, _ctx.$attrs), [
          parseIcon.value(_ctx.leftIcon).type || parseIcon.value(_ctx.leftIcon).url ? (openBlock(), createElementBlock("div", {
            key: 0,
            onClick: leftClick,
            class: "mvi-autocomplete-left-icon"
          }, [
            createVNode(unref(Icon), {
              type: parseIcon.value(_ctx.leftIcon).type,
              url: parseIcon.value(_ctx.leftIcon).url,
              spin: parseIcon.value(_ctx.leftIcon).spin,
              size: parseIcon.value(_ctx.leftIcon).size,
              color: parseIcon.value(_ctx.leftIcon).color
            }, null, 8, ["type", "url", "spin", "size", "color"])
          ])) : createCommentVNode("", true),
          withDirectives(createElementVNode("input", {
            ref_key: "inputRef",
            ref: inputRef,
            onInput: input2,
            "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => realValue.value = $event),
            type: "text",
            placeholder: _ctx.placeholder,
            style: normalizeStyle(inputStyle.value),
            name: _ctx.name,
            onFocus: inputFocus,
            onBlur: inputBlur,
            disabled: _ctx.disabled,
            autocomplete: "off",
            onKeydown: keydown,
            onKeyup: keyup,
            class: normalizeClass({ "left-none-radius": parseIcon.value(_ctx.leftIcon).type || parseIcon.value(_ctx.leftIcon).url, "right-none-radius": parseIcon.value(_ctx.rightIcon).type || parseIcon.value(_ctx.rightIcon).url || _ctx.clearable && showClearIcon.value })
          }, null, 46, _hoisted_2$w), [
            [vModelText, realValue.value]
          ]),
          _ctx.clearable ? withDirectives((openBlock(), createElementBlock("div", {
            key: 1,
            onClick: doClear,
            class: "mvi-autocomplete-clear",
            style: normalizeStyle(clearStyle.value)
          }, [
            createVNode(unref(Icon), { type: "times-o" })
          ], 4)), [
            [vShow, showClearIcon.value]
          ]) : createCommentVNode("", true),
          parseIcon.value(_ctx.rightIcon).type || parseIcon.value(_ctx.rightIcon).url ? (openBlock(), createElementBlock("div", {
            key: 2,
            class: "mvi-autocomplete-right-icon",
            onClick: rightClick
          }, [
            createVNode(unref(Icon), {
              type: parseIcon.value(_ctx.rightIcon).type,
              url: parseIcon.value(_ctx.rightIcon).url,
              spin: parseIcon.value(_ctx.rightIcon).spin,
              size: parseIcon.value(_ctx.rightIcon).size,
              color: parseIcon.value(_ctx.rightIcon).color
            }, null, 8, ["type", "url", "spin", "size", "color"])
          ])) : createCommentVNode("", true)
        ], 16, _hoisted_1$D),
        createVNode(unref(Layer), {
          "model-value": show.value,
          relate: `[data-id='mvi-autocomplete-${unref(instance).uid}']`,
          placement: layerRealProps.value.placement,
          offset: layerRealProps.value.offset,
          "z-index": layerRealProps.value.zIndex,
          ref_key: "layerRef",
          ref: layerRef,
          animation: layerRealProps.value.animation,
          shadow: layerRealProps.value.shadow,
          border: layerRealProps.value.border,
          timeout: layerRealProps.value.timeout,
          closable: false,
          "show-triangle": layerRealProps.value.showTriangle,
          "border-color": layerRealProps.value.borderColor,
          width: layerRealProps.value.width,
          onShowing: layerShow
        }, {
          default: withCtx(() => [
            createElementVNode("div", {
              class: normalizeClass(["mvi-autocomplete-menu", [_ctx.size]]),
              style: normalizeStyle({ maxHeight: _ctx.height }),
              ref_key: "menuRef",
              ref: menuRef
            }, [
              (openBlock(true), createElementBlock(Fragment, null, renderList(cmpFilter.value, (item) => {
                return openBlock(), createElementBlock("div", {
                  class: "mvi-autocomplete-list",
                  textContent: toDisplayString(item),
                  onClick: ($event) => doSelect(item)
                }, null, 8, _hoisted_3$q);
              }), 256))
            ], 6)
          ]),
          _: 1
        }, 8, ["model-value", "relate", "placement", "offset", "z-index", "animation", "shadow", "border", "timeout", "show-triangle", "border-color", "width"])
      ], 64);
    };
  }
});
const autocomplete = /* @__PURE__ */ _export_sfc(_sfc_main$M, [["__scopeId", "data-v-117fab4d"]]);
const Autocomplete = withInstall(autocomplete);
const OverlayProps = {
  //挂载元素
  mountEl: {
    type: String,
    default: null
  },
  //遮罩层z-index
  zIndex: {
    type: Number,
    default: 800
  },
  //遮罩层颜色
  color: {
    type: String,
    default: null
  },
  //是否显示遮罩层
  modelValue: {
    type: Boolean,
    default: false
  },
  //是否渐变
  fade: {
    type: Boolean,
    default: true
  },
  //动画时间
  timeout: {
    type: Number,
    default: 200,
    validator(value) {
      return value >= 0;
    }
  },
  //是否点击可关闭
  closable: {
    type: Boolean,
    default: false
  },
  //是否考虑PC滚动条（设置padding距离占位）
  usePadding: {
    type: Boolean,
    default: false
  }
};
const _sfc_main$L = /* @__PURE__ */ defineComponent({
  ...{
    inheritAttrs: false,
    name: "m-overlay"
  },
  __name: "overlay",
  props: OverlayProps,
  emits: ["update:modelValue", "show", "showing", "shown", "hide", "hidding", "hidden"],
  setup(__props, { expose: __expose, emit: __emit }) {
    const instance = getCurrentInstance();
    const props = __props;
    const emits = __emit;
    const overlayShow = ref(false);
    const scrollTop = ref(0);
    const scrollLeft = ref(0);
    const overflowX = ref("");
    const overflowY = ref("");
    const paddingRight = ref(0);
    const paddingBottom = ref(0);
    const hasHorizontalScroll = ref(false);
    const hasVerticalScroll = ref(false);
    const offsetParent = ref(null);
    const overlayRef = ref(null);
    const overlayStyle = computed(() => {
      let style = {};
      if (obj.number.isNumber(props.zIndex)) {
        style.zIndex = props.zIndex;
      }
      if (props.color) {
        style.background = props.color;
      }
      return style;
    });
    const $$el = computed(() => {
      return overlayRef.value;
    });
    const beforeEnter = (el) => {
      if (props.fade) {
        el.style.transition = "opacity " + props.timeout + "ms";
      }
      emits("show", el);
      if (typeof instance.appContext.config.globalProperties.overlayComponentWatch == "function") {
        instance.appContext.config.globalProperties.overlayComponentWatch.apply(instance.proxy, ["show", el]);
      }
    };
    const enter = (el) => {
      if (overlayRef.value.offsetParent) {
        offsetParent.value = overlayRef.value.offsetParent;
        if (obj.element.getScrollHeight(offsetParent.value) > offsetParent.value.clientHeight) {
          if (props.usePadding) {
            let scrollWidth = offsetParent.value.offsetWidth - offsetParent.value.clientWidth - parseFloat(obj.element.getCssStyle(offsetParent.value, "border-right-width")) - parseFloat(obj.element.getCssStyle(offsetParent.value, "border-left-width"));
            paddingRight.value = parseFloat(obj.element.getCssStyle(offsetParent.value, "padding-right"));
            offsetParent.value.style.setProperty("padding-right", paddingRight.value + scrollWidth + "px", "important");
          }
          scrollTop.value = obj.element.getScrollTop(offsetParent.value);
          overflowY.value = obj.element.getCssStyle(offsetParent.value, "overflow-y");
          offsetParent.value.style.setProperty("overflow-y", "hidden", "important");
          overlayRef.value.style.top = scrollTop.value + "px";
          hasVerticalScroll.value = true;
        }
        if (obj.element.getScrollWidth(offsetParent.value) > offsetParent.value.clientWidth) {
          if (props.usePadding) {
            let scrollHeight = offsetParent.value.offsetHeight - offsetParent.value.clientHeight - parseFloat(obj.element.getCssStyle(offsetParent.value, "border-bottom-width")) - parseFloat(obj.element.getCssStyle(offsetParent.value, "border-top-width"));
            paddingBottom.value = parseFloat(obj.element.getCssStyle(offsetParent.value, "padding-bottom"));
            offsetParent.value.style.setProperty("padding-bottom", paddingBottom.value + scrollHeight + "px", "important");
          }
          scrollLeft.value = obj.element.getScrollLeft(offsetParent.value);
          overflowX.value = obj.element.getCssStyle(offsetParent.value, "overflow-x");
          offsetParent.value.style.setProperty("overflow-x", "hidden", "important");
          overlayRef.value.style.left = scrollLeft.value + "px";
          hasHorizontalScroll.value = true;
        }
      }
      emits("showing", el);
      if (typeof instance.appContext.config.globalProperties.overlayComponentWatch == "function") {
        instance.appContext.config.globalProperties.overlayComponentWatch.apply(instance.proxy, ["showing", el]);
      }
    };
    const afterEnter = (el) => {
      if (props.fade) {
        el.style.transition = "";
      }
      emits("shown", el);
      if (typeof instance.appContext.config.globalProperties.overlayComponentWatch == "function") {
        instance.appContext.config.globalProperties.overlayComponentWatch.apply(instance.proxy, ["shown", el]);
      }
    };
    const beforeLeave = (el) => {
      if (props.fade) {
        el.style.transition = "opacity " + props.timeout + "ms";
      }
      emits("hide", el);
      if (typeof instance.appContext.config.globalProperties.overlayComponentWatch == "function") {
        instance.appContext.config.globalProperties.overlayComponentWatch.apply(instance.proxy, ["hide", el]);
      }
    };
    const leave = (el) => {
      emits("hidding", el);
      if (typeof instance.appContext.config.globalProperties.overlayComponentWatch == "function") {
        instance.appContext.config.globalProperties.overlayComponentWatch.apply(instance.proxy, ["hidding", el]);
      }
    };
    const afterLeave = (el) => {
      if (offsetParent.value) {
        if (hasVerticalScroll.value) {
          if (props.usePadding) {
            offsetParent.value.style.setProperty("padding-right", paddingRight.value + "px", "important");
          }
          offsetParent.value.style.setProperty("overflow-y", overflowY.value, "important");
          hasVerticalScroll.value = false;
        }
        if (hasHorizontalScroll.value) {
          if (props.usePadding) {
            offsetParent.value.style.setProperty("padding-bottom", paddingBottom.value + "px", "important");
          }
          offsetParent.value.style.setProperty("overflow-x", overflowX.value, "important");
          hasHorizontalScroll.value = false;
        }
      }
      if (props.fade) {
        el.style.transition = "";
      }
      emits("hidden", el);
      if (typeof instance.appContext.config.globalProperties.overlayComponentWatch == "function") {
        instance.appContext.config.globalProperties.overlayComponentWatch.apply(instance.proxy, ["hidden", el]);
      }
    };
    const closeOverlay = () => {
      if (props.closable) {
        emits("update:modelValue", false);
      }
    };
    watch(
      () => props.modelValue,
      (newValue) => {
        overlayShow.value = newValue;
      }
    );
    onMounted(() => {
      overlayShow.value = props.modelValue;
    });
    __expose({
      $$el
    });
    return (_ctx, _cache) => {
      return openBlock(), createBlock(Teleport, {
        disabled: !_ctx.mountEl,
        to: _ctx.mountEl
      }, [
        createVNode(Transition, {
          name: "mvi-overlay-fade",
          onBeforeEnter: beforeEnter,
          onEnter: enter,
          onAfterEnter: afterEnter,
          onBeforeLeave: beforeLeave,
          onLeave: leave,
          onAfterLeave: afterLeave
        }, {
          default: withCtx(() => [
            withDirectives(createElementVNode("div", mergeProps({
              onClick: withModifiers(closeOverlay, ["self"]),
              ref_key: "overlayRef",
              ref: overlayRef,
              class: "mvi-overlay",
              style: overlayStyle.value
            }, _ctx.$attrs), [
              renderSlot(_ctx.$slots, "default", {}, void 0, true)
            ], 16), [
              [vShow, overlayShow.value]
            ])
          ]),
          _: 3
        })
      ], 8, ["disabled", "to"]);
    };
  }
});
const overlay = /* @__PURE__ */ _export_sfc(_sfc_main$L, [["__scopeId", "data-v-d1b1c2d0"]]);
const Overlay = withInstall(overlay);
const PopupProps = {
  //显示与否
  modelValue: {
    type: Boolean,
    default: false
  },
  //点击背景遮罩是否关闭
  closable: {
    type: Boolean,
    default: false
  },
  //遮罩层颜色
  overlayColor: {
    type: String,
    default: null
  },
  //遮罩层z-index
  zIndex: {
    type: Number,
    default: 900
  },
  //动画时长
  timeout: {
    type: Number,
    default: 200
  },
  //弹窗的位置
  placement: {
    type: String,
    default: "bottom",
    validator(value) {
      return ["left", "top", "bottom", "right"].includes(value);
    }
  },
  //弹窗是否显示圆角
  round: {
    type: Boolean,
    default: false
  },
  //弹窗显示的宽度或者高度
  width: {
    type: String,
    default: null
  },
  //是否显示关闭图标
  showTimes: {
    type: Boolean,
    default: false
  },
  //关闭图标位置
  timesPlacement: {
    type: String,
    default: "top-right",
    validator(value) {
      return ["top-right", "top-left", "bottom-right", "bottom-left"].includes(value);
    }
  },
  //挂载元素
  mountEl: {
    type: String,
    default: null
  },
  //是否考虑滚动条影响
  usePadding: {
    type: Boolean,
    default: false
  },
  //是否设置内容的padding
  __contentPadding: {
    type: Boolean,
    default: true
  }
};
const _sfc_main$K = /* @__PURE__ */ defineComponent({
  ...{
    inheritAttrs: false,
    name: "m-popup"
  },
  __name: "popup",
  props: PopupProps,
  emits: ["update:modelValue", "show", "showing", "shown", "hide", "hidding", "hidden"],
  setup(__props, { expose: __expose, emit: __emit }) {
    const instance = getCurrentInstance();
    const props = __props;
    const emits = __emit;
    const popupShow = ref(false);
    const firstShow = ref(false);
    const overlayRef = ref(null);
    const $$el = computed(() => {
      return overlayRef.value ? overlayRef.value.$$el : null;
    });
    const show = computed({
      get() {
        return props.modelValue;
      },
      set(value) {
        emits("update:modelValue", value);
      }
    });
    const popupClass = computed(() => {
      let cls = [props.placement];
      if (props.round) {
        cls.push("round");
      }
      if (props.showTimes) {
        if (props.timesPlacement == "top-right" || props.timesPlacement == "top-left") {
          cls.push("padding-top");
        } else if (props.timesPlacement == "bottom-right" || props.timesPlacement == "bottom-left") {
          cls.push("padding-bottom");
        }
      }
      return cls;
    });
    const popupStyle = computed(() => {
      let style = {};
      if (props.placement == "left" || props.placement == "right") {
        if (props.width) {
          style.width = props.width;
        }
      } else if (props.placement == "top" || props.placement == "bottom") {
        if (props.width) {
          style.height = props.width;
        }
      }
      if (obj.number.isNumber(props.zIndex)) {
        style.zIndex = props.zIndex + 10;
      }
      style.transition = "all " + props.timeout + "ms";
      return style;
    });
    const overlayShow = () => {
      if (!firstShow.value) {
        firstShow.value = true;
      }
      popupShow.value = true;
    };
    const overlayHide = () => {
      popupShow.value = false;
    };
    const beforeEnter = (el) => {
      if (obj.data.get(el, "mvi-popup-beforeEnter-trigger")) {
        return;
      }
      obj.data.set(el, "mvi-popup-beforeEnter-trigger", true);
      emits("show", el);
      if (typeof instance.appContext.config.globalProperties.popupComponentWatch == "function") {
        instance.appContext.config.globalProperties.popupComponentWatch.apply(instance.proxy, ["show", el]);
      }
    };
    const enter = (el) => {
      if (obj.data.get(el, "mvi-popup-enter-trigger")) {
        return;
      }
      obj.data.set(el, "mvi-popup-enter-trigger", true);
      emits("showing", el);
      if (typeof instance.appContext.config.globalProperties.popupComponentWatch == "function") {
        instance.appContext.config.globalProperties.popupComponentWatch.apply(instance.proxy, ["showing", el]);
      }
    };
    const afterEnter = (el) => {
      emits("shown", el);
      if (typeof instance.appContext.config.globalProperties.popupComponentWatch == "function") {
        instance.appContext.config.globalProperties.popupComponentWatch.apply(instance.proxy, ["shown", el]);
      }
    };
    const beforeLeave = (el) => {
      obj.data.remove(el, "mvi-popup-beforeEnter-trigger");
      obj.data.remove(el, "mvi-popup-enter-trigger");
      emits("hide", el);
      if (typeof instance.appContext.config.globalProperties.popupComponentWatch == "function") {
        instance.appContext.config.globalProperties.popupComponentWatch.apply(instance.proxy, ["hide", el]);
      }
    };
    const leave = (el) => {
      emits("hidding", el);
      if (typeof instance.appContext.config.globalProperties.popupComponentWatch == "function") {
        instance.appContext.config.globalProperties.popupComponentWatch.apply(instance.proxy, ["hidding", el]);
      }
    };
    const afterLeave = (el) => {
      emits("hidden", el);
      if (typeof instance.appContext.config.globalProperties.popupComponentWatch == "function") {
        instance.appContext.config.globalProperties.popupComponentWatch.apply(instance.proxy, ["hidden", el]);
      }
    };
    __expose({
      $$el
    });
    return (_ctx, _cache) => {
      return openBlock(), createBlock(unref(Overlay), {
        ref_key: "overlayRef",
        ref: overlayRef,
        modelValue: show.value,
        "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => show.value = $event),
        onShow: overlayShow,
        onHide: overlayHide,
        "use-padding": _ctx.usePadding,
        "z-index": _ctx.zIndex,
        color: _ctx.overlayColor,
        timeout: _ctx.timeout,
        "mount-el": _ctx.mountEl,
        closable: _ctx.closable
      }, {
        default: withCtx(() => [
          createVNode(Transition, {
            name: "mvi-slide-" + _ctx.placement,
            onBeforeEnter: beforeEnter,
            onEnter: enter,
            onAfterEnter: afterEnter,
            onBeforeLeave: beforeLeave,
            onLeave: leave,
            onAfterLeave: afterLeave
          }, {
            default: withCtx(() => [
              firstShow.value ? withDirectives((openBlock(), createElementBlock("div", mergeProps({
                key: 0,
                class: ["mvi-popup", popupClass.value],
                style: popupStyle.value
              }, _ctx.$attrs), [
                _ctx.showTimes ? (openBlock(), createElementBlock("div", {
                  key: 0,
                  class: normalizeClass(["mvi-popup-times", _ctx.timesPlacement])
                }, [
                  createVNode(unref(Icon), {
                    onClick: _cache[0] || (_cache[0] = ($event) => show.value = false),
                    type: "times"
                  })
                ], 2)) : createCommentVNode("", true),
                createElementVNode("div", {
                  class: "mvi-popup-content",
                  style: normalizeStyle({ padding: _ctx.__contentPadding ? "" : 0 })
                }, [
                  renderSlot(_ctx.$slots, "default", {}, void 0, true)
                ], 4)
              ], 16)), [
                [vShow, popupShow.value]
              ]) : createCommentVNode("", true)
            ]),
            _: 3
          }, 8, ["name"])
        ]),
        _: 3
      }, 8, ["modelValue", "use-padding", "z-index", "color", "timeout", "mount-el", "closable"]);
    };
  }
});
const popup = /* @__PURE__ */ _export_sfc(_sfc_main$K, [["__scopeId", "data-v-aa746d7c"]]);
const Popup = withInstall(popup);
const DropdownProps = {
  //默认选中的选项
  modelValue: {
    type: [Object, Number, String, Array],
    default: null
  },
  //菜单列表选中的颜色
  activeColor: {
    type: String,
    default: null
  },
  //列表参数,含label,value,disabled,icon
  options: {
    type: Array,
    default: function() {
      return [];
    }
  },
  //选择完毕后是否关闭
  selectedClose: {
    type: Boolean,
    default: true
  },
  //自定义右侧选中的图标
  selectedIcon: {
    type: [String, Object],
    default: "success"
  },
  //是否显示
  show: {
    type: Boolean,
    default: false
  },
  //遮罩层颜色
  overlayColor: {
    type: String,
    default: null
  },
  //层级
  zIndex: {
    type: Number,
    default: 900
  },
  //动画时间
  timeout: {
    type: Number,
    default: 200
  },
  //是否圆角
  round: {
    type: Boolean,
    default: false
  },
  //位置
  placement: {
    type: String,
    default: "top"
  },
  //点击遮罩是否可关闭
  closable: {
    type: Boolean,
    default: true
  },
  //挂载元素
  mountEl: {
    type: String,
    default: null
  },
  //是否显示点击态
  active: {
    type: Boolean,
    default: true
  },
  //局部显示时是否考虑滚动条影响
  usePadding: {
    type: Boolean,
    default: false
  }
};
const _hoisted_1$C = { class: "mvi-dropdown" };
const _hoisted_2$v = ["disabled", "onClick"];
const _hoisted_3$p = { class: "mvi-dropdown-label" };
const _hoisted_4$i = ["textContent"];
const _hoisted_5$c = ["data-placement"];
const _sfc_main$J = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-dropdown"
  },
  __name: "dropdown",
  props: DropdownProps,
  emits: ["update:modelValue", "update:show", "select", "show", "showing", "shown", "hide", "hidding", "hidden"],
  setup(__props, { expose: __expose, emit: __emit }) {
    const props = __props;
    const emits = __emit;
    const popupRef = ref(null);
    const $$el = computed(() => {
      return popupRef.value ? popupRef.value.$$el : null;
    });
    const cmpShow = computed({
      set(value) {
        emits("update:show", value);
      },
      get() {
        return props.show;
      }
    });
    const parseIcon = computed(() => {
      return (params) => {
        let icon2 = {
          spin: false,
          type: "",
          url: "",
          color: "",
          size: ""
        };
        if (obj.common.isObject(params)) {
          if (typeof params.spin == "boolean") {
            icon2.spin = params.spin;
          }
          if (typeof params.type == "string") {
            icon2.type = params.type;
          }
          if (typeof params.url == "string") {
            icon2.url = params.url;
          }
          if (typeof params.color == "string") {
            icon2.color = params.color;
          }
          if (typeof params.size == "string") {
            icon2.size = params.size;
          }
        } else if (typeof params == "string") {
          icon2.type = params;
        }
        return icon2;
      };
    });
    const equalValue = computed(() => {
      return (item, index) => {
        if (item.value === void 0 || item.value === null) {
          return props.modelValue === index;
        }
        return obj.common.equal(props.modelValue, item.value);
      };
    });
    const itemDisabled = computed(() => {
      return (item) => {
        if (typeof item.disabled == "boolean") {
          return item.disabled;
        }
        return false;
      };
    });
    const dropdownItemStyle = computed(() => {
      return (item, index) => {
        let style = {};
        if (!itemDisabled.value(item) && equalValue.value(item, index) && props.activeColor) {
          style.color = props.activeColor;
        }
        return style;
      };
    });
    const dropdownItemClass = computed(() => {
      return (item, index) => {
        let cls = [];
        if (equalValue.value(item, index) && !item.disabled) {
          cls.push("checked");
        }
        if (props.active && !item.disabled) {
          cls.push("active");
        }
        return cls;
      };
    });
    const doSelect = (item, index) => {
      if (item.disabled) {
        return;
      }
      emits("select", JSON.parse(JSON.stringify(item)), index);
      if (!obj.common.equal(item.value, props.modelValue)) {
        emits("update:modelValue", item.value);
      }
      if (props.selectedClose) {
        cmpShow.value = false;
      }
    };
    __expose({
      $$el
    });
    return (_ctx, _cache) => {
      return openBlock(), createBlock(unref(Popup), {
        ref_key: "popupRef",
        ref: popupRef,
        modelValue: cmpShow.value,
        "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => cmpShow.value = $event),
        "overlay-color": _ctx.overlayColor,
        "z-index": _ctx.zIndex,
        timeout: _ctx.timeout,
        placement: _ctx.placement,
        round: _ctx.round,
        "use-padding": _ctx.usePadding,
        "mount-el": _ctx.mountEl,
        closable: _ctx.closable,
        __contentPadding: false
      }, {
        default: withCtx(() => [
          createElementVNode("div", _hoisted_1$C, [
            (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.options, (item, index) => {
              return openBlock(), createElementBlock("div", {
                disabled: itemDisabled.value(item) || null,
                class: normalizeClass(["mvi-dropdown-item", dropdownItemClass.value(item, index)]),
                onClick: ($event) => doSelect(item, index),
                style: normalizeStyle(dropdownItemStyle.value(item, index))
              }, [
                createElementVNode("div", _hoisted_3$p, [
                  item.icon ? (openBlock(), createBlock(unref(Icon), {
                    key: 0,
                    type: parseIcon.value(item.icon).type,
                    url: parseIcon.value(item.icon).url,
                    spin: parseIcon.value(item.icon).spin,
                    class: "mvi-dropdown-label-icon",
                    size: parseIcon.value(item.icon).size,
                    color: parseIcon.value(item.icon).color
                  }, null, 8, ["type", "url", "spin", "size", "color"])) : createCommentVNode("", true),
                  createElementVNode("span", {
                    class: "mvi-dropdown-label-text",
                    textContent: toDisplayString(item.label || "")
                  }, null, 8, _hoisted_4$i)
                ]),
                createElementVNode("div", {
                  class: normalizeClass(["mvi-dropdown-icon", { checked: equalValue.value(item, index) }]),
                  "data-placement": _ctx.placement
                }, [
                  createVNode(unref(Icon), {
                    type: parseIcon.value(_ctx.selectedIcon).type,
                    url: parseIcon.value(_ctx.selectedIcon).url,
                    spin: parseIcon.value(_ctx.selectedIcon).spin,
                    size: parseIcon.value(_ctx.selectedIcon).size,
                    color: parseIcon.value(_ctx.selectedIcon).color
                  }, null, 8, ["type", "url", "spin", "size", "color"])
                ], 10, _hoisted_5$c)
              ], 14, _hoisted_2$v);
            }), 256))
          ])
        ]),
        _: 1
      }, 8, ["modelValue", "overlay-color", "z-index", "timeout", "placement", "round", "use-padding", "mount-el", "closable"]);
    };
  }
});
const dropdown = /* @__PURE__ */ _export_sfc(_sfc_main$J, [["__scopeId", "data-v-1078d964"]]);
const Dropdown = withInstall(dropdown);
const TooltipProps = {
  //提示内容
  title: {
    type: String,
    default: ""
  },
  //显示位置
  placement: {
    type: String,
    default: "bottom"
  },
  //是否禁用
  disabled: {
    type: Boolean,
    default: false
  },
  //动画时间
  timeout: {
    type: Number,
    default: 200
  },
  //边框颜色
  borderColor: {
    type: String,
    default: null
  },
  //背景色
  color: {
    type: String,
    default: null
  },
  //字体颜色
  textColor: {
    type: String,
    default: null
  },
  //触发方式
  trigger: {
    type: String,
    default: "click",
    validator(value) {
      return ["hover", "click", "custom"].includes(value);
    }
  },
  //提示内容距离触发元素的距离
  offset: {
    type: String,
    default: "0.1rem"
  },
  //层级
  zIndex: {
    type: Number,
    default: 20
  },
  //宽度
  width: {
    type: String,
    default: null
  },
  //显示动画
  animation: {
    type: String,
    default: null
  },
  //是否显示三角图标
  showTriangle: {
    type: Boolean,
    default: true
  },
  //是否以块级展示
  block: {
    type: Boolean,
    default: false
  }
};
const _hoisted_1$B = ["data-id"];
const _hoisted_2$u = ["textContent"];
const _sfc_main$I = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-tooltip",
    inheritAttrs: false
  },
  __name: "tooltip",
  props: TooltipProps,
  setup(__props, { expose: __expose }) {
    const instance = getCurrentInstance();
    const props = __props;
    const show = ref(false);
    const observe = ref(null);
    const innerBorderColor = ref("");
    const innerColor = ref("");
    const innerTextColor = ref("");
    const showTooltip = () => {
      if (props.disabled) {
        return;
      }
      show.value = true;
    };
    const hideTooltip = () => {
      if (props.disabled) {
        return;
      }
      show.value = false;
    };
    const hoverShowTooltip = () => {
      if (props.trigger == "hover") {
        showTooltip();
      }
    };
    const hoverHideToolTip = () => {
      if (props.trigger == "hover") {
        hideTooltip();
      }
    };
    const clickShowTooltip = () => {
      if (props.trigger === "click") {
        if (show.value) {
          hideTooltip();
        } else {
          showTooltip();
        }
      }
    };
    watch(
      () => props.borderColor,
      (newVal) => {
        innerBorderColor.value = newVal || (isDark() ? "#fff" : "#1a1a1a");
      },
      {
        immediate: true
      }
    );
    watch(
      () => props.color,
      (newVal) => {
        innerColor.value = newVal || (isDark() ? "#fff" : "#1a1a1a");
      },
      {
        immediate: true
      }
    );
    watch(
      () => props.textColor,
      (newVal) => {
        innerTextColor.value = newVal || (isDark() ? "#1a1a1a" : "#fff");
      },
      {
        immediate: true
      }
    );
    onMounted(() => {
      observe.value = new Observe$1(document.documentElement, {
        attributes: true,
        childList: false,
        subtree: false,
        attributeNames: ["data-mvi-dark"],
        attributesChange: () => {
          innerBorderColor.value = props.borderColor || (isDark() ? "#fff" : "#1a1a1a");
          innerColor.value = props.color || (isDark() ? "#fff" : "#1a1a1a");
          innerTextColor.value = props.textColor || (isDark() ? "#1a1a1a" : "#fff");
        }
      });
      observe.value.init();
    });
    onBeforeUnmount(() => {
      var _a;
      (_a = observe.value) == null ? void 0 : _a.destroy();
    });
    __expose({
      showTooltip,
      hideTooltip
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock(Fragment, null, [
        createElementVNode("div", mergeProps({
          onClick: clickShowTooltip,
          onMouseenter: hoverShowTooltip,
          onMouseleave: hoverHideToolTip,
          class: ["mvi-tooltip", { block: _ctx.block }],
          "data-id": "mvi-tooltip-" + unref(instance).uid
        }, _ctx.$attrs), [
          renderSlot(_ctx.$slots, "default", {}, void 0, true)
        ], 16, _hoisted_1$B),
        createVNode(unref(Layer), {
          modelValue: show.value,
          "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => show.value = $event),
          offset: _ctx.offset,
          background: innerColor.value,
          border: "",
          "border-color": innerBorderColor.value,
          closable: "",
          "show-triangle": _ctx.showTriangle,
          "z-index": _ctx.zIndex,
          relate: `[data-id='mvi-tooltip-${unref(instance).uid}']`,
          placement: _ctx.placement,
          width: _ctx.width,
          timeout: _ctx.timeout,
          animation: _ctx.animation || "mvi-tooltip",
          shadow: false
        }, {
          default: withCtx(() => [
            createElementVNode("div", {
              class: "mvi-tooltip-content",
              style: normalizeStyle({ color: innerTextColor.value, whiteSpace: _ctx.width ? "normal" : "" })
            }, [
              _ctx.$slots.title ? renderSlot(_ctx.$slots, "title", { key: 0 }, void 0, true) : (openBlock(), createElementBlock("span", {
                key: 1,
                textContent: toDisplayString(_ctx.title)
              }, null, 8, _hoisted_2$u))
            ], 4)
          ]),
          _: 3
        }, 8, ["modelValue", "offset", "background", "border-color", "show-triangle", "z-index", "relate", "placement", "width", "timeout", "animation"])
      ], 64);
    };
  }
});
const tooltip = /* @__PURE__ */ _export_sfc(_sfc_main$I, [["__scopeId", "data-v-c0ce1b3c"]]);
const Tooltip = withInstall(tooltip);
const TransitionSlideProps = {
  //是否展开
  expand: {
    type: Boolean,
    default: true
  },
  //动画时间
  timeout: {
    type: Number,
    default: 200
  }
};
const _sfc_main$H = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-transition-slide"
  },
  __name: "transition-slide",
  props: TransitionSlideProps,
  emits: ["before-slide-down", "slide-down", "before-slide-up", "slide-up"],
  setup(__props, { emit: __emit }) {
    const props = __props;
    const emits = __emit;
    const show = ref(true);
    const height = ref("");
    const useAnimation = ref(false);
    const opacity = ref(0);
    const slideRef = ref(null);
    watch(
      () => props.expand,
      (newValue) => {
        show.value = newValue;
      }
    );
    const beforeEnter = (el) => {
      el.style.height = "0";
      el.style.transition = "height " + props.timeout + "ms linear";
      emits("before-slide-down", slideRef.value);
    };
    const enter = (el) => {
      el.offsetWidth;
      el.style.height = height.value;
    };
    const afterEnter = (el) => {
      el.style.transition = "";
      el.style.height = "";
      emits("slide-down", slideRef.value);
    };
    const beforeLeave = (el) => {
      if (!height.value) {
        height.value = obj.element.getCssStyle(el, "height");
      }
      el.style.height = height.value;
      if (useAnimation.value) {
        el.style.transition = "height " + props.timeout + "ms linear";
        emits("before-slide-up", slideRef.value);
      }
    };
    const leave = (el) => {
      el.offsetWidth;
      el.style.height = "0";
    };
    const afterLeave = (el) => {
      el.style.height = "";
      if (useAnimation.value) {
        el.style.transition = "";
        emits("slide-up", slideRef.value);
      } else {
        useAnimation.value = true;
        opacity.value = "";
      }
    };
    onMounted(() => {
      show.value = props.expand;
      if (show.value) {
        useAnimation.value = true;
        opacity.value = "";
      }
    });
    return (_ctx, _cache) => {
      return openBlock(), createBlock(Transition, {
        name: "mvi-transition-slide",
        onBeforeEnter: beforeEnter,
        onAfterEnter: afterEnter,
        onBeforeLeave: beforeLeave,
        onAfterLeave: afterLeave,
        onEnter: enter,
        onLeave: leave
      }, {
        default: withCtx(() => [
          withDirectives(createElementVNode("div", {
            class: "mvi-transition-slide",
            ref_key: "slideRef",
            ref: slideRef,
            style: normalizeStyle({ opacity: opacity.value })
          }, [
            renderSlot(_ctx.$slots, "default", {}, void 0, true)
          ], 4), [
            [vShow, show.value]
          ])
        ]),
        _: 3
      });
    };
  }
});
const transitionSlide = /* @__PURE__ */ _export_sfc(_sfc_main$H, [["__scopeId", "data-v-5dd3ed5b"]]);
const TransitionSlide = withInstall(transitionSlide);
const SwitchProps = {
  //是否勾选
  modelValue: {
    type: Boolean,
    default: false
  },
  //是否显示加载状态
  loading: {
    type: Boolean,
    default: false
  },
  //是否禁用
  disabled: {
    type: Boolean,
    default: false
  },
  //尺寸大小
  size: {
    type: String,
    default: "0.4rem"
  },
  //开关打开时背景色
  activeColor: {
    type: String,
    default: null
  },
  //开关关闭时背景色
  inactiveColor: {
    type: String,
    default: null
  }
};
const _hoisted_1$A = ["disabled"];
const _hoisted_2$t = ["checked", "disabled"];
const _sfc_main$G = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-switch"
  },
  __name: "switch",
  props: SwitchProps,
  emits: ["update:modelValue", "change"],
  setup(__props, { emit: __emit }) {
    const props = __props;
    const emits = __emit;
    const switchStyle = computed(() => {
      let style = {};
      if (props.inactiveColor && !props.modelValue) {
        style.backgroundColor = props.inactiveColor;
      }
      if (props.activeColor && props.modelValue) {
        style.backgroundColor = props.activeColor;
      }
      if (props.size) {
        style.width = `calc(${props.size} * 2)`;
      }
      return style;
    });
    const elStyle = computed(() => {
      let style = {};
      if (props.activeColor) {
        style.color = props.activeColor;
      }
      if (props.size) {
        style.width = props.size;
        style.height = props.size;
        style.fontSize = props.size;
      }
      return style;
    });
    const change = (event2) => {
      let check = event2.target.checked;
      emits("update:modelValue", check);
      emits("change", check);
    };
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("label", {
        class: normalizeClass(["mvi-switch", { checked: _ctx.modelValue }]),
        style: normalizeStyle(switchStyle.value),
        disabled: _ctx.disabled || null
      }, [
        createElementVNode("span", {
          class: normalizeClass(["mvi-switch-el", { checked: _ctx.modelValue }]),
          style: normalizeStyle(elStyle.value)
        }, [
          _ctx.loading && !_ctx.disabled ? (openBlock(), createBlock(unref(Icon), {
            key: 0,
            type: "load-e",
            spin: "",
            size: "0.8em"
          })) : createCommentVNode("", true)
        ], 6),
        createElementVNode("input", {
          onChange: change,
          type: "checkbox",
          checked: _ctx.modelValue,
          disabled: _ctx.disabled || _ctx.loading
        }, null, 40, _hoisted_2$t)
      ], 14, _hoisted_1$A);
    };
  }
});
const _switch = /* @__PURE__ */ _export_sfc(_sfc_main$G, [["__scopeId", "data-v-8c04bc8f"]]);
const Switch = withInstall(_switch);
const NavbarProps = {
  //标题
  title: {
    type: String,
    default: null
  },
  //左侧文本
  leftText: {
    type: String,
    default: null
  },
  //右侧文本
  rightText: {
    type: String,
    default: null
  },
  //左侧图标
  leftIcon: {
    type: [String, Object],
    default: null
  },
  //右侧图标
  rightIcon: {
    type: [String, Object],
    default: null
  },
  //是否固定顶部
  fixed: {
    type: Boolean,
    default: false
  },
  //是否显示下边框
  border: {
    type: Boolean,
    default: false
  },
  //层级
  zIndex: {
    type: Number,
    default: 400
  }
};
const _hoisted_1$z = ["textContent"];
const _hoisted_2$s = { class: "mvi-navbar-title" };
const _hoisted_3$o = ["textContent"];
const _hoisted_4$h = ["textContent"];
const _sfc_main$F = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-navbar"
  },
  __name: "navbar",
  props: NavbarProps,
  emits: ["left-click", "right-click", "title-click"],
  setup(__props, { emit: __emit }) {
    const props = __props;
    const emits = __emit;
    const parseIcon = computed(() => {
      return (params) => {
        let icon2 = {
          spin: false,
          type: "",
          url: "",
          color: "",
          size: ""
        };
        if (obj.common.isObject(params)) {
          if (typeof params.spin == "boolean") {
            icon2.spin = params.spin;
          }
          if (typeof params.type == "string") {
            icon2.type = params.type;
          }
          if (typeof params.url == "string") {
            icon2.url = params.url;
          }
          if (typeof params.color == "string") {
            icon2.color = params.color;
          }
          if (typeof params.size == "string") {
            icon2.size = params.size;
          }
        } else if (typeof params == "string") {
          icon2.type = params;
        }
        return icon2;
      };
    });
    const showLeft = computed(() => {
      return !!(parseIcon.value(props.leftIcon).type || parseIcon.value(props.leftIcon).url || useSlots().left || props.leftText);
    });
    const showRight = computed(() => {
      return !!(parseIcon.value(props.rightIcon).type || parseIcon.value(props.rightIcon).url || useSlots().right || props.rightText);
    });
    const leftStyle = computed(() => {
      let style = {};
      if (props.title || useSlots().title) {
        style.width = "20%";
      } else if (showRight.value) {
        style.width = "50%";
      } else {
        style.width = "100%";
      }
      return style;
    });
    const rightStyle = computed(() => {
      let style = {};
      if (props.title || useSlots().title) {
        style.width = "20%";
      } else if (showLeft.value) {
        style.width = "50%";
      } else {
        style.width = "100%";
      }
      return style;
    });
    const centerStyle = computed(() => {
      let style = {};
      if (showLeft.value || showRight.value) {
        style.width = "60%";
      } else {
        style.width = "100%";
      }
      return style;
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["mvi-navbar", { fixed: _ctx.fixed, border: _ctx.border }]),
        style: normalizeStyle({ "z-index": _ctx.fixed ? _ctx.zIndex : "" })
      }, [
        showLeft.value ? (openBlock(), createElementBlock("div", {
          key: 0,
          onClick: _cache[0] || (_cache[0] = ($event) => emits("left-click")),
          class: "mvi-navbar-left",
          style: normalizeStyle(leftStyle.value)
        }, [
          _ctx.$slots.left ? renderSlot(_ctx.$slots, "left", { key: 0 }, void 0, true) : createCommentVNode("", true),
          (parseIcon.value(_ctx.leftIcon).type || parseIcon.value(_ctx.leftIcon).url) && !_ctx.$slots.left ? (openBlock(), createBlock(unref(Icon), {
            key: 1,
            class: normalizeClass({ "mvi-navbar-left-icon": !!_ctx.leftText }),
            type: parseIcon.value(_ctx.leftIcon).type,
            url: parseIcon.value(_ctx.leftIcon).url,
            spin: parseIcon.value(_ctx.leftIcon).spin,
            size: parseIcon.value(_ctx.leftIcon).size,
            color: parseIcon.value(_ctx.leftIcon).color
          }, null, 8, ["class", "type", "url", "spin", "size", "color"])) : createCommentVNode("", true),
          _ctx.leftText && !_ctx.$slots.left ? (openBlock(), createElementBlock("span", {
            key: 2,
            class: "mvi-navbar-left-text",
            textContent: toDisplayString(_ctx.leftText)
          }, null, 8, _hoisted_1$z)) : createCommentVNode("", true)
        ], 4)) : createCommentVNode("", true),
        _ctx.$slots.title || _ctx.title ? (openBlock(), createElementBlock("div", {
          key: 1,
          onClick: _cache[1] || (_cache[1] = ($event) => emits("title-click")),
          class: "mvi-navbar-center",
          style: normalizeStyle(centerStyle.value)
        }, [
          createElementVNode("div", _hoisted_2$s, [
            _ctx.$slots.title ? renderSlot(_ctx.$slots, "title", { key: 0 }, void 0, true) : _ctx.title ? (openBlock(), createElementBlock("span", {
              key: 1,
              textContent: toDisplayString(_ctx.title)
            }, null, 8, _hoisted_3$o)) : createCommentVNode("", true)
          ])
        ], 4)) : createCommentVNode("", true),
        showRight.value ? (openBlock(), createElementBlock("div", {
          key: 2,
          onClick: _cache[2] || (_cache[2] = ($event) => emits("right-click")),
          class: "mvi-navbar-right",
          style: normalizeStyle(rightStyle.value)
        }, [
          _ctx.$slots.right ? renderSlot(_ctx.$slots, "right", { key: 0 }, void 0, true) : createCommentVNode("", true),
          _ctx.rightText && !_ctx.$slots.right ? (openBlock(), createElementBlock("span", {
            key: 1,
            class: "mvi-navbar-right-text",
            textContent: toDisplayString(_ctx.rightText)
          }, null, 8, _hoisted_4$h)) : createCommentVNode("", true),
          (parseIcon.value(_ctx.rightIcon).type || parseIcon.value(_ctx.rightIcon).url) && !_ctx.$slots.right ? (openBlock(), createBlock(unref(Icon), {
            key: 2,
            class: normalizeClass({ "mvi-navbar-right-icon": !!_ctx.rightText }),
            type: parseIcon.value(_ctx.rightIcon).type,
            url: parseIcon.value(_ctx.rightIcon).url,
            spin: parseIcon.value(_ctx.rightIcon).spin,
            size: parseIcon.value(_ctx.rightIcon).size,
            color: parseIcon.value(_ctx.rightIcon).color
          }, null, 8, ["class", "type", "url", "spin", "size", "color"])) : createCommentVNode("", true)
        ], 4)) : createCommentVNode("", true)
      ], 6);
    };
  }
});
const navbar = /* @__PURE__ */ _export_sfc(_sfc_main$F, [["__scopeId", "data-v-b0585dce"]]);
const Navbar = withInstall(navbar);
const NotifyProps = {
  //提示类型
  type: {
    type: String,
    default: null
  },
  //展示文字
  message: {
    type: String,
    default: null
  },
  //字体颜色
  color: {
    type: String,
    default: null
  },
  //背景色
  background: {
    type: String,
    default: null
  },
  //层级
  zIndex: {
    type: Number,
    default: null
  },
  //自动关闭间隔
  timeout: {
    type: Number,
    default: null
  },
  //图标
  icon: {
    type: [String, Object],
    default: null
  },
  //移除方法
  __remove: {
    type: Function,
    default: function() {
      return function() {
      };
    }
  },
  //初始化方法
  __init: {
    type: Function,
    default: function() {
      return function() {
      };
    }
  }
};
const _hoisted_1$y = { class: "mvi-notify-content" };
const _hoisted_2$r = ["textContent"];
const _sfc_main$E = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-notify"
  },
  __name: "notify",
  props: NotifyProps,
  setup(__props, { expose: __expose }) {
    const instance = getCurrentInstance();
    const props = __props;
    const timer = ref(null);
    const show = ref(false);
    const cmpType = computed(() => {
      let arr = ["success", "info", "primary", "error", "warn"];
      if (arr.includes(props.type)) {
        return props.type;
      }
      return "success";
    });
    const cmpMessage = computed(() => {
      if (typeof props.message == "string") {
        return props.message;
      }
      if (obj.common.isObject(props.message)) {
        return JSON.stringify(props.message);
      }
      return String(props.message);
    });
    const cmpColor = computed(() => {
      if (typeof props.color == "string") {
        return props.color;
      }
      return null;
    });
    const cmpBackground = computed(() => {
      if (typeof props.background == "string") {
        return props.background;
      }
      return null;
    });
    const cmpZIndex = computed(() => {
      if (obj.number.isNumber(props.zIndex)) {
        return props.zIndex;
      }
      return 1100;
    });
    const cmpTimeout = computed(() => {
      if (obj.number.isNumber(props.timeout)) {
        return props.timeout;
      }
      return 1500;
    });
    const parseIcon = computed(() => {
      return (params) => {
        let icon2 = {
          spin: false,
          type: "",
          url: "",
          color: "",
          size: ""
        };
        if (obj.common.isObject(params)) {
          if (typeof params.spin == "boolean") {
            icon2.spin = params.spin;
          }
          if (typeof params.type == "string") {
            icon2.type = params.type;
          }
          if (typeof params.url == "string") {
            icon2.url = params.url;
          }
          if (typeof params.color == "string") {
            icon2.color = params.color;
          }
          if (typeof params.size == "string") {
            icon2.size = params.size;
          }
        } else if (typeof params == "string") {
          icon2.type = params;
        }
        return icon2;
      };
    });
    const notifyStyle = computed(() => {
      let style = {
        zIndex: cmpZIndex.value
      };
      if (cmpBackground.value) {
        style.backgroundColor = cmpBackground.value;
      }
      if (cmpColor.value) {
        style.color = cmpColor.value;
      }
      return style;
    });
    const clearTimer = () => {
      if (timer.value) {
        clearTimeout(timer.value);
        timer.value = null;
      }
    };
    const afterEnter = () => {
      if (cmpTimeout.value > 0) {
        timer.value = setTimeout(() => {
          show.value = false;
        }, cmpTimeout.value);
      }
    };
    const afterLeave = () => {
      clearTimer();
      props.__remove();
    };
    onMounted(() => {
      show.value = true;
      props.__init(instance);
    });
    __expose({
      show
    });
    return (_ctx, _cache) => {
      return openBlock(), createBlock(Teleport, { to: "body" }, [
        createVNode(Transition, {
          name: "mvi-notify",
          onAfterLeave: afterLeave,
          onAfterEnter: afterEnter
        }, {
          default: withCtx(() => [
            withDirectives(createElementVNode("div", {
              class: normalizeClass(["mvi-notify", [cmpType.value]]),
              style: normalizeStyle(notifyStyle.value)
            }, [
              createElementVNode("div", _hoisted_1$y, [
                parseIcon.value(_ctx.icon).type || parseIcon.value(_ctx.icon).url ? (openBlock(), createBlock(unref(Icon), {
                  key: 0,
                  type: parseIcon.value(_ctx.icon).type,
                  url: parseIcon.value(_ctx.icon).url,
                  spin: parseIcon.value(_ctx.icon).spin,
                  size: parseIcon.value(_ctx.icon).size,
                  color: parseIcon.value(_ctx.icon).color
                }, null, 8, ["type", "url", "spin", "size", "color"])) : createCommentVNode("", true),
                createElementVNode("span", {
                  textContent: toDisplayString(cmpMessage.value)
                }, null, 8, _hoisted_2$r)
              ])
            ], 6), [
              [vShow, show.value]
            ])
          ]),
          _: 1
        })
      ]);
    };
  }
});
const NotifyComponent = /* @__PURE__ */ _export_sfc(_sfc_main$E, [["__scopeId", "data-v-54119060"]]);
const Notify = {
  //初始化参数
  initParams: (options) => {
    let opts = {};
    if (obj.common.isObject(options)) {
      opts.type = options.type;
      opts.message = options.message;
      opts.timeout = options.timeout;
      opts.background = options.background;
      opts.color = options.color;
      opts.zIndex = options.zIndex;
      opts.icon = options.icon;
    } else {
      opts.message = options;
    }
    return opts;
  },
  //安装函数
  install: (app) => {
    app.config.globalProperties.$showNotify = Notify.showNotify;
    app.provide("$showNotify", Notify.showNotify);
    app.config.globalProperties.$hideNotify = Notify.hideNotify;
    app.provide("$hideNotify", Notify.hideNotify);
  },
  //显示弹窗
  showNotify: (options) => {
    return new Promise((resolve) => {
      if (Notify.$el && Notify.$instance) {
        Notify.$instance.unmount();
        Notify.$el.remove();
      }
      let opts = Notify.initParams(options);
      let mountNode = obj.element.string2dom("<div></div>");
      document.body.appendChild(mountNode);
      const instance = createApp(NotifyComponent, {
        ...opts,
        __init: (vm) => {
          Notify.$vm = vm;
        },
        __remove: () => {
          instance.unmount();
          mountNode.remove();
          resolve();
        }
      });
      instance.mount(mountNode);
      Notify.$el = mountNode;
      Notify.$instance = instance;
    });
  },
  //关闭弹窗
  hideNotify: () => {
    if (Notify.$vm) {
      Notify.$vm.exposed.show.value = false;
    }
  }
};
const ActionsheetProps = {
  //是否显示
  modelValue: {
    type: Boolean,
    default: false
  },
  //遮罩层颜色
  overlayColor: {
    type: String,
    default: null
  },
  //层级
  zIndex: {
    type: Number,
    default: 900
  },
  //动画时间
  timeout: {
    type: Number,
    default: 200
  },
  //是否显示圆角
  round: {
    type: Boolean,
    default: false
  },
  //标题
  title: {
    type: String,
    default: null
  },
  //点击遮罩是否可关闭
  closable: {
    type: Boolean,
    default: false
  },
  //配置项，每个配置项包含label、loading、icon、placement、disabled
  options: {
    type: Array,
    default: function() {
      return [];
    }
  },
  //是否显示取消按钮
  showCancel: {
    type: Boolean,
    default: true
  },
  //取消按钮文字
  cancelText: {
    type: String,
    default: "取消"
  },
  //列表和取消按钮是否显示点击态
  active: {
    type: Boolean,
    default: true
  },
  //挂载元素
  mountEl: {
    type: String,
    default: null
  },
  //选择完是否自动关闭
  selectClose: {
    type: Boolean,
    default: true
  },
  //局部显示时是否考虑滚动条影响
  usePadding: {
    type: Boolean,
    default: false
  },
  //尺寸
  size: {
    type: String,
    default: "medium",
    validator(value) {
      return ["medium", "large"].includes(value);
    }
  }
};
const _withScopeId$3 = (n) => (pushScopeId("data-v-4d6a59fe"), n = n(), popScopeId(), n);
const _hoisted_1$x = { class: "mvi-actionsheet" };
const _hoisted_2$q = ["textContent"];
const _hoisted_3$n = { class: "mvi-actionsheet-list" };
const _hoisted_4$g = ["disabled", "onClick"];
const _hoisted_5$b = {
  key: 1,
  class: "mvi-actionsheet-content"
};
const _hoisted_6$a = ["textContent"];
const _hoisted_7$9 = /* @__PURE__ */ _withScopeId$3(() => /* @__PURE__ */ createElementVNode("div", { class: "mvi-actionsheet-divider" }, null, -1));
const _hoisted_8$6 = ["textContent"];
const _sfc_main$D = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-actionsheet"
  },
  __name: "actionsheet",
  props: ActionsheetProps,
  emits: ["update:modelValue", "select"],
  setup(__props, { expose: __expose, emit: __emit }) {
    const props = __props;
    const emits = __emit;
    const popupRef = ref(null);
    const $$el = computed(() => {
      return popupRef.value ? popupRef.value.$$el : null;
    });
    const show = computed({
      get() {
        return props.modelValue;
      },
      set(value) {
        emits("update:modelValue", value);
      }
    });
    const parseIcon = computed(() => {
      return (params) => {
        let icon2 = {
          spin: false,
          type: "",
          url: "",
          color: "",
          size: ""
        };
        if (obj.common.isObject(params)) {
          if (typeof params.spin == "boolean") {
            icon2.spin = params.spin;
          }
          if (typeof params.type == "string") {
            icon2.type = params.type;
          }
          if (typeof params.url == "string") {
            icon2.url = params.url;
          }
          if (typeof params.color == "string") {
            icon2.color = params.color;
          }
          if (typeof params.size == "string") {
            icon2.size = params.size;
          }
        } else if (typeof params == "string") {
          icon2.type = params;
        }
        return icon2;
      };
    });
    const itemClass = computed(() => {
      return (item) => {
        let cls = [props.size];
        if (props.active && !item.loading && !item.disabled) {
          cls.push("active");
        }
        return cls;
      };
    });
    const itemDisabled = computed(() => {
      return (item) => {
        if (typeof item.disabled == "boolean") {
          return item.disabled;
        }
        return false;
      };
    });
    const doSelect = (item, index) => {
      if (item.disabled || item.loading) {
        return;
      }
      if (props.selectClose) {
        show.value = false;
      }
      emits("select", { ...item }, index);
    };
    __expose({
      $$el
    });
    return (_ctx, _cache) => {
      return openBlock(), createBlock(unref(Popup), {
        ref_key: "popupRef",
        ref: popupRef,
        modelValue: show.value,
        "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => show.value = $event),
        "overlay-color": _ctx.overlayColor,
        "z-index": _ctx.zIndex,
        timeout: _ctx.timeout,
        placement: "bottom",
        round: _ctx.round,
        "use-padding": _ctx.usePadding,
        "mount-el": _ctx.mountEl,
        closable: _ctx.closable
      }, {
        default: withCtx(() => [
          createElementVNode("div", _hoisted_1$x, [
            _ctx.title ? (openBlock(), createElementBlock("div", {
              key: 0,
              class: normalizeClass(["mvi-actionsheet-title", [_ctx.size]]),
              textContent: toDisplayString(_ctx.title)
            }, null, 10, _hoisted_2$q)) : createCommentVNode("", true),
            createElementVNode("div", _hoisted_3$n, [
              (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.options, (item, index) => {
                return openBlock(), createElementBlock("div", {
                  class: normalizeClass(["mvi-actionsheet-item", itemClass.value(item)]),
                  disabled: itemDisabled.value(item) || null,
                  onClick: ($event) => doSelect(item, index)
                }, [
                  item.loading || false ? (openBlock(), createBlock(unref(Loading), {
                    key: 0,
                    size: _ctx.size == "large" ? "0.5rem" : "0.4rem"
                  }, null, 8, ["size"])) : item.label || parseIcon.value(item.icon).type || parseIcon.value(item.icon).url ? (openBlock(), createElementBlock("div", _hoisted_5$b, [
                    (parseIcon.value(item.icon).type || parseIcon.value(item.icon).url) && item.placement != "right" ? (openBlock(), createBlock(unref(Icon), {
                      key: 0,
                      "data-placement": "left",
                      type: parseIcon.value(item.icon).type,
                      url: parseIcon.value(item.icon).url,
                      spin: parseIcon.value(item.icon).spin,
                      size: parseIcon.value(item.icon).size,
                      color: parseIcon.value(item.icon).color
                    }, null, 8, ["type", "url", "spin", "size", "color"])) : createCommentVNode("", true),
                    item.label ? (openBlock(), createElementBlock("span", {
                      key: 1,
                      class: "mvi-actionsheet-item-label",
                      textContent: toDisplayString(item.label)
                    }, null, 8, _hoisted_6$a)) : createCommentVNode("", true),
                    (parseIcon.value(item.icon).type || parseIcon.value(item.icon).url) && item.placement == "right" ? (openBlock(), createBlock(unref(Icon), {
                      key: 2,
                      "data-placement": "right",
                      type: parseIcon.value(item.icon).type,
                      url: parseIcon.value(item.icon).url,
                      spin: parseIcon.value(item.icon).spin,
                      size: parseIcon.value(item.icon).size,
                      color: parseIcon.value(item.icon).color
                    }, null, 8, ["type", "url", "spin", "size", "color"])) : createCommentVNode("", true)
                  ])) : createCommentVNode("", true)
                ], 10, _hoisted_4$g);
              }), 256))
            ]),
            _hoisted_7$9,
            _ctx.showCancel ? (openBlock(), createElementBlock("div", {
              key: 1,
              class: normalizeClass(["mvi-actionsheet-button", [_ctx.size, { active: _ctx.active }]]),
              textContent: toDisplayString(_ctx.cancelText),
              onClick: _cache[0] || (_cache[0] = ($event) => show.value = false)
            }, null, 10, _hoisted_8$6)) : createCommentVNode("", true)
          ])
        ]),
        _: 1
      }, 8, ["modelValue", "overlay-color", "z-index", "timeout", "round", "use-padding", "mount-el", "closable"]);
    };
  }
});
const actionsheet = /* @__PURE__ */ _export_sfc(_sfc_main$D, [["__scopeId", "data-v-4d6a59fe"]]);
const Actionsheet = withInstall(actionsheet);
var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
function getDefaultExportFromCjs(x) {
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
}
var dayjs_min = { exports: {} };
(function(module, exports) {
  !function(t, e) {
    module.exports = e();
  }(commonjsGlobal, function() {
    var t = 1e3, e = 6e4, n = 36e5, r = "millisecond", i = "second", s = "minute", u = "hour", a = "day", o = "week", c = "month", f = "quarter", h2 = "year", d = "date", l = "Invalid Date", $ = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/, y = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, M = { name: "en", weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), ordinal: function(t2) {
      var e2 = ["th", "st", "nd", "rd"], n2 = t2 % 100;
      return "[" + t2 + (e2[(n2 - 20) % 10] || e2[n2] || e2[0]) + "]";
    } }, m = function(t2, e2, n2) {
      var r2 = String(t2);
      return !r2 || r2.length >= e2 ? t2 : "" + Array(e2 + 1 - r2.length).join(n2) + t2;
    }, v = { s: m, z: function(t2) {
      var e2 = -t2.utcOffset(), n2 = Math.abs(e2), r2 = Math.floor(n2 / 60), i2 = n2 % 60;
      return (e2 <= 0 ? "+" : "-") + m(r2, 2, "0") + ":" + m(i2, 2, "0");
    }, m: function t2(e2, n2) {
      if (e2.date() < n2.date())
        return -t2(n2, e2);
      var r2 = 12 * (n2.year() - e2.year()) + (n2.month() - e2.month()), i2 = e2.clone().add(r2, c), s2 = n2 - i2 < 0, u2 = e2.clone().add(r2 + (s2 ? -1 : 1), c);
      return +(-(r2 + (n2 - i2) / (s2 ? i2 - u2 : u2 - i2)) || 0);
    }, a: function(t2) {
      return t2 < 0 ? Math.ceil(t2) || 0 : Math.floor(t2);
    }, p: function(t2) {
      return { M: c, y: h2, w: o, d: a, D: d, h: u, m: s, s: i, ms: r, Q: f }[t2] || String(t2 || "").toLowerCase().replace(/s$/, "");
    }, u: function(t2) {
      return void 0 === t2;
    } }, g = "en", D = {};
    D[g] = M;
    var p = "$isDayjsObject", S = function(t2) {
      return t2 instanceof _ || !(!t2 || !t2[p]);
    }, w = function t2(e2, n2, r2) {
      var i2;
      if (!e2)
        return g;
      if ("string" == typeof e2) {
        var s2 = e2.toLowerCase();
        D[s2] && (i2 = s2), n2 && (D[s2] = n2, i2 = s2);
        var u2 = e2.split("-");
        if (!i2 && u2.length > 1)
          return t2(u2[0]);
      } else {
        var a2 = e2.name;
        D[a2] = e2, i2 = a2;
      }
      return !r2 && i2 && (g = i2), i2 || !r2 && g;
    }, O = function(t2, e2) {
      if (S(t2))
        return t2.clone();
      var n2 = "object" == typeof e2 ? e2 : {};
      return n2.date = t2, n2.args = arguments, new _(n2);
    }, b = v;
    b.l = w, b.i = S, b.w = function(t2, e2) {
      return O(t2, { locale: e2.$L, utc: e2.$u, x: e2.$x, $offset: e2.$offset });
    };
    var _ = function() {
      function M2(t2) {
        this.$L = w(t2.locale, null, true), this.parse(t2), this.$x = this.$x || t2.x || {}, this[p] = true;
      }
      var m2 = M2.prototype;
      return m2.parse = function(t2) {
        this.$d = function(t3) {
          var e2 = t3.date, n2 = t3.utc;
          if (null === e2)
            return /* @__PURE__ */ new Date(NaN);
          if (b.u(e2))
            return /* @__PURE__ */ new Date();
          if (e2 instanceof Date)
            return new Date(e2);
          if ("string" == typeof e2 && !/Z$/i.test(e2)) {
            var r2 = e2.match($);
            if (r2) {
              var i2 = r2[2] - 1 || 0, s2 = (r2[7] || "0").substring(0, 3);
              return n2 ? new Date(Date.UTC(r2[1], i2, r2[3] || 1, r2[4] || 0, r2[5] || 0, r2[6] || 0, s2)) : new Date(r2[1], i2, r2[3] || 1, r2[4] || 0, r2[5] || 0, r2[6] || 0, s2);
            }
          }
          return new Date(e2);
        }(t2), this.init();
      }, m2.init = function() {
        var t2 = this.$d;
        this.$y = t2.getFullYear(), this.$M = t2.getMonth(), this.$D = t2.getDate(), this.$W = t2.getDay(), this.$H = t2.getHours(), this.$m = t2.getMinutes(), this.$s = t2.getSeconds(), this.$ms = t2.getMilliseconds();
      }, m2.$utils = function() {
        return b;
      }, m2.isValid = function() {
        return !(this.$d.toString() === l);
      }, m2.isSame = function(t2, e2) {
        var n2 = O(t2);
        return this.startOf(e2) <= n2 && n2 <= this.endOf(e2);
      }, m2.isAfter = function(t2, e2) {
        return O(t2) < this.startOf(e2);
      }, m2.isBefore = function(t2, e2) {
        return this.endOf(e2) < O(t2);
      }, m2.$g = function(t2, e2, n2) {
        return b.u(t2) ? this[e2] : this.set(n2, t2);
      }, m2.unix = function() {
        return Math.floor(this.valueOf() / 1e3);
      }, m2.valueOf = function() {
        return this.$d.getTime();
      }, m2.startOf = function(t2, e2) {
        var n2 = this, r2 = !!b.u(e2) || e2, f2 = b.p(t2), l2 = function(t3, e3) {
          var i2 = b.w(n2.$u ? Date.UTC(n2.$y, e3, t3) : new Date(n2.$y, e3, t3), n2);
          return r2 ? i2 : i2.endOf(a);
        }, $2 = function(t3, e3) {
          return b.w(n2.toDate()[t3].apply(n2.toDate("s"), (r2 ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e3)), n2);
        }, y2 = this.$W, M3 = this.$M, m3 = this.$D, v2 = "set" + (this.$u ? "UTC" : "");
        switch (f2) {
          case h2:
            return r2 ? l2(1, 0) : l2(31, 11);
          case c:
            return r2 ? l2(1, M3) : l2(0, M3 + 1);
          case o:
            var g2 = this.$locale().weekStart || 0, D2 = (y2 < g2 ? y2 + 7 : y2) - g2;
            return l2(r2 ? m3 - D2 : m3 + (6 - D2), M3);
          case a:
          case d:
            return $2(v2 + "Hours", 0);
          case u:
            return $2(v2 + "Minutes", 1);
          case s:
            return $2(v2 + "Seconds", 2);
          case i:
            return $2(v2 + "Milliseconds", 3);
          default:
            return this.clone();
        }
      }, m2.endOf = function(t2) {
        return this.startOf(t2, false);
      }, m2.$set = function(t2, e2) {
        var n2, o2 = b.p(t2), f2 = "set" + (this.$u ? "UTC" : ""), l2 = (n2 = {}, n2[a] = f2 + "Date", n2[d] = f2 + "Date", n2[c] = f2 + "Month", n2[h2] = f2 + "FullYear", n2[u] = f2 + "Hours", n2[s] = f2 + "Minutes", n2[i] = f2 + "Seconds", n2[r] = f2 + "Milliseconds", n2)[o2], $2 = o2 === a ? this.$D + (e2 - this.$W) : e2;
        if (o2 === c || o2 === h2) {
          var y2 = this.clone().set(d, 1);
          y2.$d[l2]($2), y2.init(), this.$d = y2.set(d, Math.min(this.$D, y2.daysInMonth())).$d;
        } else
          l2 && this.$d[l2]($2);
        return this.init(), this;
      }, m2.set = function(t2, e2) {
        return this.clone().$set(t2, e2);
      }, m2.get = function(t2) {
        return this[b.p(t2)]();
      }, m2.add = function(r2, f2) {
        var d2, l2 = this;
        r2 = Number(r2);
        var $2 = b.p(f2), y2 = function(t2) {
          var e2 = O(l2);
          return b.w(e2.date(e2.date() + Math.round(t2 * r2)), l2);
        };
        if ($2 === c)
          return this.set(c, this.$M + r2);
        if ($2 === h2)
          return this.set(h2, this.$y + r2);
        if ($2 === a)
          return y2(1);
        if ($2 === o)
          return y2(7);
        var M3 = (d2 = {}, d2[s] = e, d2[u] = n, d2[i] = t, d2)[$2] || 1, m3 = this.$d.getTime() + r2 * M3;
        return b.w(m3, this);
      }, m2.subtract = function(t2, e2) {
        return this.add(-1 * t2, e2);
      }, m2.format = function(t2) {
        var e2 = this, n2 = this.$locale();
        if (!this.isValid())
          return n2.invalidDate || l;
        var r2 = t2 || "YYYY-MM-DDTHH:mm:ssZ", i2 = b.z(this), s2 = this.$H, u2 = this.$m, a2 = this.$M, o2 = n2.weekdays, c2 = n2.months, f2 = n2.meridiem, h3 = function(t3, n3, i3, s3) {
          return t3 && (t3[n3] || t3(e2, r2)) || i3[n3].slice(0, s3);
        }, d2 = function(t3) {
          return b.s(s2 % 12 || 12, t3, "0");
        }, $2 = f2 || function(t3, e3, n3) {
          var r3 = t3 < 12 ? "AM" : "PM";
          return n3 ? r3.toLowerCase() : r3;
        };
        return r2.replace(y, function(t3, r3) {
          return r3 || function(t4) {
            switch (t4) {
              case "YY":
                return String(e2.$y).slice(-2);
              case "YYYY":
                return b.s(e2.$y, 4, "0");
              case "M":
                return a2 + 1;
              case "MM":
                return b.s(a2 + 1, 2, "0");
              case "MMM":
                return h3(n2.monthsShort, a2, c2, 3);
              case "MMMM":
                return h3(c2, a2);
              case "D":
                return e2.$D;
              case "DD":
                return b.s(e2.$D, 2, "0");
              case "d":
                return String(e2.$W);
              case "dd":
                return h3(n2.weekdaysMin, e2.$W, o2, 2);
              case "ddd":
                return h3(n2.weekdaysShort, e2.$W, o2, 3);
              case "dddd":
                return o2[e2.$W];
              case "H":
                return String(s2);
              case "HH":
                return b.s(s2, 2, "0");
              case "h":
                return d2(1);
              case "hh":
                return d2(2);
              case "a":
                return $2(s2, u2, true);
              case "A":
                return $2(s2, u2, false);
              case "m":
                return String(u2);
              case "mm":
                return b.s(u2, 2, "0");
              case "s":
                return String(e2.$s);
              case "ss":
                return b.s(e2.$s, 2, "0");
              case "SSS":
                return b.s(e2.$ms, 3, "0");
              case "Z":
                return i2;
            }
            return null;
          }(t3) || i2.replace(":", "");
        });
      }, m2.utcOffset = function() {
        return 15 * -Math.round(this.$d.getTimezoneOffset() / 15);
      }, m2.diff = function(r2, d2, l2) {
        var $2, y2 = this, M3 = b.p(d2), m3 = O(r2), v2 = (m3.utcOffset() - this.utcOffset()) * e, g2 = this - m3, D2 = function() {
          return b.m(y2, m3);
        };
        switch (M3) {
          case h2:
            $2 = D2() / 12;
            break;
          case c:
            $2 = D2();
            break;
          case f:
            $2 = D2() / 3;
            break;
          case o:
            $2 = (g2 - v2) / 6048e5;
            break;
          case a:
            $2 = (g2 - v2) / 864e5;
            break;
          case u:
            $2 = g2 / n;
            break;
          case s:
            $2 = g2 / e;
            break;
          case i:
            $2 = g2 / t;
            break;
          default:
            $2 = g2;
        }
        return l2 ? $2 : b.a($2);
      }, m2.daysInMonth = function() {
        return this.endOf(c).$D;
      }, m2.$locale = function() {
        return D[this.$L];
      }, m2.locale = function(t2, e2) {
        if (!t2)
          return this.$L;
        var n2 = this.clone(), r2 = w(t2, e2, true);
        return r2 && (n2.$L = r2), n2;
      }, m2.clone = function() {
        return b.w(this.$d, this);
      }, m2.toDate = function() {
        return new Date(this.valueOf());
      }, m2.toJSON = function() {
        return this.isValid() ? this.toISOString() : null;
      }, m2.toISOString = function() {
        return this.$d.toISOString();
      }, m2.toString = function() {
        return this.$d.toUTCString();
      }, M2;
    }(), k = _.prototype;
    return O.prototype = k, [["$ms", r], ["$s", i], ["$m", s], ["$H", u], ["$W", a], ["$M", c], ["$y", h2], ["$D", d]].forEach(function(t2) {
      k[t2[1]] = function(e2) {
        return this.$g(e2, t2[0], t2[1]);
      };
    }), O.extend = function(t2, e2) {
      return t2.$i || (t2(e2, _, O), t2.$i = true), O;
    }, O.locale = w, O.isDayjs = S, O.unix = function(t2) {
      return O(1e3 * t2);
    }, O.en = D[g], O.Ls = D, O.p = {}, O;
  });
})(dayjs_min);
var dayjs_minExports = dayjs_min.exports;
const dayjs = /* @__PURE__ */ getDefaultExportFromCjs(dayjs_minExports);
const CalendarProps = {
  //指定显示的日期
  modelValue: {
    type: Date,
    default: function() {
      return /* @__PURE__ */ new Date();
    }
  },
  //视图类型
  view: {
    type: String,
    default: "date",
    validator(value) {
      return ["year", "month", "date"].includes(value);
    }
  },
  //月份面板显示的月份数组文字
  monthText: {
    type: Array,
    default: function() {
      return ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"];
    },
    validator(value) {
      if (value.length != 12) {
        return false;
      }
      return value.every((item) => {
        return obj.number.isNumber(item) || typeof item == "string" && item;
      });
    }
  },
  //头部显示的星期数组
  weekText: {
    type: Array,
    default: function() {
      return ["日", "一", "二", "三", "四", "五", "六"];
    },
    validator(value) {
      if (value.length != 7) {
        return false;
      }
      return value.every((item) => {
        return obj.number.isNumber(item) || typeof item == "string" && item;
      });
    }
  },
  //开始日期
  startDate: {
    type: Date,
    default: function() {
      return dayjs("1970-01-01").toDate();
    }
  },
  //截止日期
  endDate: {
    type: Date,
    default: function() {
      return dayjs("2099-01-01").toDate();
    }
  },
  //非本月日期是否可以点击
  nonCurrentClick: {
    type: Boolean,
    default: false
  },
  //点击态
  active: {
    type: Boolean,
    default: true
  },
  //主题样式
  type: {
    type: String,
    default: "info",
    validator(value) {
      return ["info", "primary", "error", "warn", "success"].includes(value);
    }
  }
};
const _hoisted_1$w = { class: "mvi-calendar" };
const _hoisted_2$p = { class: "mvi-calendar-years" };
const _hoisted_3$m = { class: "mvi-calendar-year" };
const _hoisted_4$f = ["disabled", "onClick"];
const _hoisted_5$a = { class: "mvi-calendar-months" };
const _hoisted_6$9 = { class: "mvi-calendar-month" };
const _hoisted_7$8 = ["disabled", "onClick"];
const _hoisted_8$5 = {
  key: 2,
  class: "mvi-calendar-date"
};
const _hoisted_9$4 = { class: "mvi-calendar-date-header" };
const _hoisted_10$1 = { class: "mvi-calendar-date-header-item" };
const _hoisted_11$1 = { class: "mvi-calendar-date-body" };
const _hoisted_12$1 = { class: "mvi-calendar-date-row" };
const _hoisted_13$1 = { class: "mvi-calendar-date-column" };
const _hoisted_14 = ["disabled", "onClick"];
const _sfc_main$C = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-calendar"
  },
  __name: "calendar",
  props: CalendarProps,
  emits: ["update:modelValue", "date-click", "month-click", "year-click"],
  setup(__props, { emit: __emit }) {
    const props = __props;
    const emits = __emit;
    const years = computed(() => {
      let arr = [];
      const year = props.modelValue.getFullYear();
      const startYear = props.startDate.getFullYear();
      let index = Math.floor((year - startYear) / 12);
      for (let i = startYear + index * 12; i < startYear + index * 12 + 12; i++) {
        arr.push(dayjs(props.modelValue).year(i).toDate());
      }
      return arr;
    });
    const months = computed(() => {
      let arr = [];
      for (let i = 0; i < 12; i++) {
        arr.push(dayjs(props.modelValue).month(i).toDate());
      }
      return arr;
    });
    const days = computed(() => {
      let total = dayjs(props.modelValue).daysInMonth();
      let arr = [];
      for (let i = 1; i <= total; i++) {
        arr.push({
          date: dayjs(`${dayjs(props.modelValue).format("YYYY-MM")}-${i < 10 ? "0" + i : i}`).toDate(),
          nonCurrent: false
        });
      }
      const firstDate = arr[0].date;
      let firstWeek = firstDate.getDay();
      for (let i = 0; i < firstWeek; i++) {
        let prevDate = dayjs(firstDate).subtract(i + 1, "day").toDate();
        arr.unshift({
          date: prevDate,
          nonCurrent: true
        });
      }
      const lastDate = arr[arr.length - 1].date;
      let lastWeek = lastDate.getDay();
      for (let i = 0; i < 6 - lastWeek; i++) {
        let nextDate = dayjs(lastDate).add(i + 1, "day").toDate();
        arr.push({
          date: nextDate,
          nonCurrent: true
        });
      }
      return arr;
    });
    const yearDisabled = computed(() => {
      return (date) => {
        return dayjs(date).isBefore(dayjs(props.startDate), "year") || dayjs(date).isAfter(dayjs(props.endDate), "year");
      };
    });
    const monthDisabled = computed(() => {
      return (date) => {
        return dayjs(date).isBefore(dayjs(props.startDate), "month") || dayjs(date).isAfter(dayjs(props.endDate), "month");
      };
    });
    const dateDisabled = computed(() => {
      return (item) => {
        return dayjs(item.date).isBefore(dayjs(props.startDate), "date") || dayjs(item.date).isAfter(dayjs(props.endDate), "date");
      };
    });
    const yearClass = computed(() => {
      return (date) => {
        let arr = [props.type];
        if (yearDisabled.value(date)) {
          return arr;
        }
        if (props.active) {
          arr.push("active");
        }
        if (dayjs().isSame(dayjs(date), "year")) {
          arr.push("now");
        }
        if (dayjs(props.modelValue).isSame(dayjs(date), "year")) {
          arr.push("current");
        }
        return arr;
      };
    });
    const monthClass = computed(() => {
      return (date) => {
        let arr = [props.type];
        if (monthDisabled.value(date)) {
          return arr;
        }
        if (props.active) {
          arr.push("active");
        }
        if (dayjs().isSame(dayjs(date), "month")) {
          arr.push("now");
        }
        if (dayjs(props.modelValue).isSame(dayjs(date), "month")) {
          arr.push("current");
        }
        return arr;
      };
    });
    const dateClass = computed(() => {
      return (item) => {
        let arr = [props.type];
        if (dateDisabled.value(item)) {
          return arr;
        }
        if (item.nonCurrent) {
          arr.push("none-current");
          if (props.nonCurrentClick) {
            arr.push("allowed");
            if (props.active) {
              arr.push("active");
            }
          }
        } else {
          if (props.active) {
            arr.push("active");
          }
          if (dayjs().isSame(dayjs(item.date), "date")) {
            arr.push("now");
          }
          if (dayjs(props.modelValue).isSame(dayjs(item.date), "date")) {
            arr.push("current");
          }
        }
        return arr;
      };
    });
    const yearClick = (date) => {
      if (yearDisabled.value(date)) {
        return;
      }
      emits("update:modelValue", date);
      emits("year-click", date);
    };
    const monthClick = (date) => {
      if (monthDisabled.value(date)) {
        return;
      }
      emits("update:modelValue", date);
      emits("month-click", date);
    };
    const dateClick = (item) => {
      if (dateDisabled.value(item)) {
        return;
      }
      if (item.nonCurrent && !props.nonCurrentClick) {
        return;
      }
      emits("update:modelValue", item.date);
      emits("date-click", item.date);
    };
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", _hoisted_1$w, [
        _ctx.view == "year" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, renderList([0, 1, 2], (item) => {
          return createElementVNode("div", _hoisted_2$p, [
            (openBlock(true), createElementBlock(Fragment, null, renderList(years.value.slice(item * 4, item * 4 + 4), (el) => {
              return openBlock(), createElementBlock("div", _hoisted_3$m, [
                createElementVNode("div", {
                  class: normalizeClass(["mvi-calendar-year-item", yearClass.value(el)]),
                  disabled: yearDisabled.value(el) || null,
                  onClick: ($event) => yearClick(el)
                }, toDisplayString(el.getFullYear()), 11, _hoisted_4$f)
              ]);
            }), 256))
          ]);
        }), 64)) : _ctx.view == "month" ? (openBlock(), createElementBlock(Fragment, { key: 1 }, renderList([0, 1, 2], (item) => {
          return createElementVNode("div", _hoisted_5$a, [
            (openBlock(true), createElementBlock(Fragment, null, renderList(months.value.slice(item * 4, item * 4 + 4), (el) => {
              return openBlock(), createElementBlock("div", _hoisted_6$9, [
                createElementVNode("div", {
                  class: normalizeClass(["mvi-calendar-month-item", monthClass.value(el)]),
                  disabled: monthDisabled.value(el) || null,
                  onClick: ($event) => monthClick(el)
                }, toDisplayString(_ctx.monthText[el.getMonth()]), 11, _hoisted_7$8)
              ]);
            }), 256))
          ]);
        }), 64)) : _ctx.view == "date" ? (openBlock(), createElementBlock("div", _hoisted_8$5, [
          createElementVNode("div", _hoisted_9$4, [
            (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.weekText, (item) => {
              return openBlock(), createElementBlock("div", _hoisted_10$1, toDisplayString(item), 1);
            }), 256))
          ]),
          createElementVNode("div", _hoisted_11$1, [
            (openBlock(), createElementBlock(Fragment, null, renderList([0, 1, 2, 3, 4, 5], (item) => {
              return createElementVNode("div", _hoisted_12$1, [
                (openBlock(true), createElementBlock(Fragment, null, renderList(days.value.slice(item * 7, item * 7 + 7), (el) => {
                  return openBlock(), createElementBlock("div", _hoisted_13$1, [
                    createElementVNode("div", {
                      class: normalizeClass(["mvi-calendar-date-item", dateClass.value(el)]),
                      disabled: dateDisabled.value(el) || null,
                      onClick: ($event) => dateClick(el)
                    }, toDisplayString(el.date.getDate()), 11, _hoisted_14)
                  ]);
                }), 256))
              ]);
            }), 64))
          ])
        ])) : createCommentVNode("", true)
      ]);
    };
  }
});
const calendar = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["__scopeId", "data-v-6fadcb4d"]]);
const Calendar = withInstall(calendar);
const CircleProgressProps = {
  //进度值
  value: {
    type: Number,
    default: 0
  },
  //最小值
  min: {
    type: Number,
    default: 0
  },
  //最大值
  max: {
    type: Number,
    default: 100
  },
  //直径
  size: {
    type: Number,
    default: 2
  },
  //进度颜色
  color: {
    type: String,
    default: null
  },
  //轨道颜色
  trackColor: {
    type: String,
    default: null
  },
  //填充色
  fill: {
    type: String,
    default: null
  },
  //是否显示动画效果
  animation: {
    type: Boolean,
    default: true
  },
  //动画效果的时长
  timeout: {
    type: Number,
    default: 400
  },
  //是否显示文字
  showTip: {
    type: Boolean,
    default: false
  },
  //中间显示的文本
  tipText: {
    type: String,
    default: null
  },
  //进度条厚度
  strokeWidth: {
    type: Number,
    default: 0.2
  },
  //进度条端点是否有圆角
  round: {
    type: Boolean,
    default: false
  },
  //是否顺时针增加
  clockWise: {
    type: Boolean,
    default: true
  }
};
const _hoisted_1$v = ["viewBox"];
const _hoisted_2$o = ["d"];
const _hoisted_3$l = ["d"];
const _hoisted_4$e = {
  key: 0,
  class: "mvi-circle-progress-tip"
};
const _hoisted_5$9 = ["textContent"];
const _sfc_main$B = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-circle-progress"
  },
  __name: "circle-progress",
  props: CircleProgressProps,
  setup(__props) {
    const props = __props;
    const pathSize = ref(1e3);
    const progressStyle = computed(() => {
      let style = {};
      if (props.size) {
        style.width = props.size + "rem";
        style.height = props.size + "rem";
      }
      return style;
    });
    const viewBox = computed(() => {
      let width = obj.element.rem2px(props.strokeWidth);
      return `0 0 ${pathSize.value + 2 * width} ${pathSize.value + 2 * width}`;
    });
    const pathD = computed(() => {
      let width = obj.element.rem2px(props.strokeWidth);
      return `M ${pathSize.value / 2 + width} ${pathSize.value / 2 + width} m 0, -${pathSize.value / 2} a ${pathSize.value / 2}, ${pathSize.value / 2} 0 1, ${props.clockWise ? 1 : 0} 0, ${pathSize.value} a ${pathSize.value / 2}, ${pathSize.value / 2} 0 1, ${props.clockWise ? 1 : 0} 0, -${pathSize.value}`;
    });
    const cmpValue = computed(() => {
      if (props.tipText) {
        return props.tipText;
      } else {
        let value = props.value > props.max ? props.max : props.value < props.min ? props.min : props.value;
        return Math.round((value - props.min) / (props.max - props.min) * 100) + "%";
      }
    });
    const barStyle = computed(() => {
      let style = {};
      if (props.fill) {
        style.fill = props.fill;
      }
      if (props.color) {
        style.stroke = props.color;
      }
      if (obj.number.isNumber(props.strokeWidth)) {
        style.strokeWidth = props.strokeWidth + "rem";
      }
      if (props.round) {
        style.strokeLinecap = "round";
      }
      if (props.animation) {
        style.transition = "stroke-dasharray " + props.timeout + "ms";
      }
      let circleLength = Number((pathSize.value * Math.PI).toFixed(2));
      let value = props.value > props.max ? props.max : props.value < props.min ? props.min : props.value;
      let valueLength = Number(((value - props.min) / (props.max - props.min) * circleLength).toFixed(2));
      style.strokeDasharray = valueLength + "," + (circleLength - valueLength);
      return style;
    });
    const trackStyle = computed(() => {
      let style = {};
      if (props.fill) {
        style.fill = props.fill;
      }
      if (props.trackColor) {
        style.stroke = props.trackColor;
      }
      if (obj.number.isNumber(props.strokeWidth)) {
        style.strokeWidth = props.strokeWidth + "rem";
      }
      return style;
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: "mvi-circle-progress",
        style: normalizeStyle(progressStyle.value)
      }, [
        (openBlock(), createElementBlock("svg", { viewBox: viewBox.value }, [
          createElementVNode("path", {
            d: pathD.value,
            style: normalizeStyle(trackStyle.value),
            class: "mvi-circle-progress-track"
          }, null, 12, _hoisted_2$o),
          createElementVNode("path", {
            d: pathD.value,
            style: normalizeStyle(barStyle.value),
            class: "mvi-circle-progress-bar"
          }, null, 12, _hoisted_3$l)
        ], 8, _hoisted_1$v)),
        _ctx.showTip ? (openBlock(), createElementBlock("div", _hoisted_4$e, [
          _ctx.$slots.tip ? renderSlot(_ctx.$slots, "tip", {
            key: 0,
            value: _ctx.value
          }, void 0, true) : (openBlock(), createElementBlock("span", {
            key: 1,
            textContent: toDisplayString(cmpValue.value)
          }, null, 8, _hoisted_5$9))
        ])) : createCommentVNode("", true)
      ], 4);
    };
  }
});
const circleProgress = /* @__PURE__ */ _export_sfc(_sfc_main$B, [["__scopeId", "data-v-ba0e59ad"]]);
const CircleProgress = withInstall(circleProgress);
const CollapseProps = {
  //默认展开的面板索引
  modelValue: {
    type: [Number, Array],
    default: null
  },
  //是否手风琴模式
  accordion: {
    type: Boolean,
    default: false
  },
  //是否显示每个面板的内下边框
  inBorder: {
    type: Boolean,
    default: true
  },
  //是否展示每个面板的外下边框
  outBorder: {
    type: Boolean,
    default: true
  },
  //是否禁用
  disabled: {
    type: Boolean,
    default: false
  },
  //点击标题栏是否显示点击态
  active: {
    type: Boolean,
    default: true
  },
  //是否对标题栏的标题和内容使用单行限制
  noWrap: {
    type: Boolean,
    default: false
  }
};
const _hoisted_1$u = { class: "mvi-collapse" };
const _sfc_main$A = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-collapse"
  },
  __name: "collapse",
  props: CollapseProps,
  emits: ["update:modelValue", "change", "before-slide-down", "slide-down", "before-slide-up", "slide-up"],
  setup(__props) {
    const instance = getCurrentInstance();
    componentIsMatch(instance, "m-collapse-item", ["Collapse", "CollapseItem"]);
    const children = ref([]);
    provide("collapse", instance);
    provide("collapseItemChildren", children);
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", _hoisted_1$u, [
        renderSlot(_ctx.$slots, "default", {}, void 0, true)
      ]);
    };
  }
});
const collapse = /* @__PURE__ */ _export_sfc(_sfc_main$A, [["__scopeId", "data-v-e78f08e3"]]);
const Collapse = withInstall(collapse);
const CollapseItemProps = {
  //标题栏左侧图标
  icon: {
    type: [String, Object],
    default: null
  },
  //标题
  title: {
    type: String,
    default: null
  },
  //标题栏内容
  label: {
    type: String,
    default: null
  },
  //是否禁用
  disabled: {
    type: Boolean,
    default: false
  },
  //展开的内容
  content: {
    type: String,
    default: ""
  }
};
const _hoisted_1$t = ["disabled"];
const _hoisted_2$n = { class: "mvi-collapse-content" };
const _hoisted_3$k = ["textContent"];
const _sfc_main$z = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-collapse-item"
  },
  __name: "collapse-item",
  props: CollapseItemProps,
  setup(__props) {
    const instance = getCurrentInstance();
    const collapse2 = inject("collapse", null);
    const collapseItemChildren = inject("collapseItemChildren", null);
    parentIsMatch(collapseItemChildren, collapse2, "m-collapse", ["Collapse", "CollapseItem"]);
    collapseItemChildren.value.push(instance);
    const props = __props;
    const index = computed(() => {
      return collapseItemChildren.value.findIndex((vm) => {
        return obj.common.equal(vm.uid, instance.uid);
      });
    });
    const cmpDisabled = computed(() => {
      return !!(collapse2.props.disabled || props.disabled);
    });
    const cmpActive = computed(() => {
      if (cmpDisabled.value) {
        return false;
      }
      return collapse2.props.active;
    });
    const expand = computed(() => {
      let flag = false;
      if (collapse2.props.accordion) {
        if (collapse2.props.modelValue === index.value) {
          flag = true;
        }
      } else {
        if (obj.number.isNumber(collapse2.props.modelValue)) {
          if (collapse2.props.modelValue === index.value) {
            flag = true;
          }
        } else if (Array.isArray(collapse2.props.modelValue)) {
          if (collapse2.props.modelValue.includes(index.value)) {
            flag = true;
          }
        }
      }
      return flag;
    });
    const beforeSlideDown = () => {
      collapse2.emit("before-slide-down", index.value);
    };
    const slideDown = () => {
      collapse2.emit("slide-down", index.value);
    };
    const beforeSlideUp = () => {
      collapse2.emit("before-slide-up", index.value);
    };
    const slideUp = () => {
      collapse2.emit("slide-up", index.value);
    };
    const changeCollapse = () => {
      if (cmpDisabled.value) {
        return false;
      }
      if (collapse2.props.accordion) {
        if (collapse2.props.modelValue == index.value) {
          collapse2.emit("update:modelValue", null);
          collapse2.emit("change", null);
        } else {
          collapse2.emit("update:modelValue", index.value);
          collapse2.emit("change", index.value);
        }
      } else {
        if (obj.number.isNumber(collapse2.props.modelValue)) {
          if (collapse2.props.modelValue == index.value) {
            collapse2.emit("update:modelValue", []);
            collapse2.emit("change", []);
          } else {
            collapse2.emit("update:modelValue", [collapse2.props.modelValue, index.value]);
            collapse2.emit("change", [collapse2.props.modelValue, index.value]);
          }
        } else if (Array.isArray(collapse2.props.modelValue)) {
          let arr = [...collapse2.props.modelValue];
          if (arr.includes(index.value)) {
            arr = arr.filter((item) => {
              return item != index.value;
            });
            collapse2.emit("update:modelValue", arr);
            collapse2.emit("change", arr);
          } else {
            arr.push(index.value);
            collapse2.emit("update:modelValue", arr);
            collapse2.emit("change", arr);
          }
        } else {
          let arr = [index.value];
          collapse2.emit("update:modelValue", arr);
          collapse2.emit("change", arr);
        }
      }
    };
    onBeforeUnmount(() => {
      collapseItemChildren.value.splice(index.value, 1);
      if (collapse2.props.modelValue > 0) {
        collapse2.emit("update:modelValue", collapse2.props.modelValue - 1);
        collapse2.emit("change", collapse2.props.modelValue - 1);
      }
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["mvi-collapse-item", { border: unref(collapse2).props.outBorder }]),
        disabled: cmpDisabled.value || null
      }, [
        createVNode(unref(Cell), {
          class: normalizeClass(["mvi-collapse-cell", { expand: expand.value }]),
          icon: _ctx.icon,
          content: _ctx.label,
          title: _ctx.title,
          border: unref(collapse2).props.inBorder,
          arrow: { type: "angle-right", size: "0.8em" },
          onClick: changeCollapse,
          active: cmpActive.value,
          "no-wrap": unref(collapse2).props.noWrap
        }, null, 8, ["class", "icon", "content", "title", "border", "active", "no-wrap"]),
        createVNode(unref(TransitionSlide), {
          expand: expand.value,
          timeout: 200,
          onBeforeSlideUp: beforeSlideUp,
          onSlideUp: slideUp,
          onBeforeSlideDown: beforeSlideDown,
          onSlideDown: slideDown
        }, {
          default: withCtx(() => [
            createElementVNode("div", _hoisted_2$n, [
              _ctx.$slots.default ? renderSlot(_ctx.$slots, "default", { key: 0 }, void 0, true) : (openBlock(), createElementBlock("span", {
                key: 1,
                textContent: toDisplayString(_ctx.content)
              }, null, 8, _hoisted_3$k))
            ])
          ]),
          _: 3
        }, 8, ["expand"])
      ], 10, _hoisted_1$t);
    };
  }
});
const collapseItem = /* @__PURE__ */ _export_sfc(_sfc_main$z, [["__scopeId", "data-v-f821f4c2"]]);
const CollapseItem = withInstall(collapseItem);
const DateChooserProps = {
  //当前日期
  modelValue: {
    type: Date,
    default: function() {
      return /* @__PURE__ */ new Date();
    }
  },
  //是否禁用
  disabled: {
    type: Boolean,
    default: false
  },
  //layer组件参数
  layerProps: {
    type: Object,
    default: function() {
      return {};
    }
  },
  //点击其他地方是否关闭日历
  closable: {
    type: Boolean,
    default: true
  },
  //触发方法
  trigger: {
    type: String,
    default: "click",
    validator(value) {
      return ["hover", "click", "custom"].includes(value);
    }
  },
  //模式
  mode: {
    type: String,
    default: "date",
    validator(value) {
      return ["year", "month", "date"].includes(value);
    }
  },
  //月份面板显示的月份数组文字
  monthText: {
    type: Array,
    default: function() {
      return ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"];
    }
  },
  //头部显示的星期数组
  weekText: {
    type: Array,
    default: function() {
      return ["日", "一", "二", "三", "四", "五", "六"];
    }
  },
  //开始日期
  startDate: {
    type: Date,
    default: function() {
      return dayjs("1970-01-01").toDate();
    }
  },
  //截止日期
  endDate: {
    type: Date,
    default: function() {
      return dayjs("2099-01-01").toDate();
    }
  },
  //日历面板点击态
  active: {
    type: Boolean,
    default: true
  },
  //主题样式
  type: {
    type: String,
    default: "info",
    validator(value) {
      return ["info", "primary", "error", "warn", "success"].includes(value);
    }
  },
  //是否块级
  block: {
    type: Boolean,
    default: false
  },
  //头部年月显示格式化
  headerFormatter: {
    type: Function,
    default: null
  }
};
const _withScopeId$2 = (n) => (pushScopeId("data-v-1d54a060"), n = n(), popScopeId(), n);
const _hoisted_1$s = ["data-id"];
const _hoisted_2$m = {
  key: 0,
  class: "mvi-date-chooser-year-header"
};
const _hoisted_3$j = { class: "mvi-date-chooser-year-center" };
const _hoisted_4$d = /* @__PURE__ */ _withScopeId$2(() => /* @__PURE__ */ createElementVNode("span", null, "-", -1));
const _hoisted_5$8 = {
  key: 1,
  class: "mvi-date-chooser-month-header"
};
const _hoisted_6$8 = {
  key: 2,
  class: "mvi-date-chooser-date-header"
};
const _hoisted_7$7 = { class: "mvi-date-chooser-date-left" };
const _hoisted_8$4 = { class: "mvi-date-chooser-date-center" };
const _hoisted_9$3 = { class: "mvi-date-chooser-date-right" };
const _sfc_main$y = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-date-chooser",
    inheritAttrs: false
  },
  __name: "date-chooser",
  props: DateChooserProps,
  emits: ["update:modelValue", "change"],
  setup(__props, { expose: __expose, emit: __emit }) {
    const instance = getCurrentInstance();
    const props = __props;
    const emits = __emit;
    const show = ref(false);
    const view = ref(props.mode);
    const selectedDate = ref(props.modelValue);
    const relateRef = ref(null);
    const panelRef = ref(null);
    const layerRef = ref(null);
    const layerRealProps = computed(() => {
      return {
        placement: props.layerProps.placement ? props.layerProps.placement : "bottom-start",
        width: props.layerProps.width,
        zIndex: obj.number.isNumber(props.layerProps.zIndex) ? props.layerProps.zIndex : 400,
        offset: props.layerProps.offset ? props.layerProps.offset : "0.2rem",
        animation: props.layerProps.animation,
        timeout: obj.number.isNumber(props.layerProps.timeout) ? props.layerProps.timeout : 200,
        showTriangle: typeof props.layerProps.showTriangle == "boolean" ? props.layerProps.showTriangle : false,
        shadow: typeof props.layerProps.shadow == "boolean" ? props.layerProps.shadow : true,
        border: typeof props.layerProps.border == "boolean" ? props.layerProps.border : false,
        borderColor: props.layerProps.borderColor
      };
    });
    const years = computed(() => {
      let arr = [];
      const year = selectedDate.value.getFullYear();
      const startYear = props.startDate.getFullYear();
      let index = Math.floor((year - startYear) / 12);
      for (let i = startYear + index * 12; i < startYear + index * 12 + 12; i++) {
        arr.push(dayjs(props.modelValue).year(i).toDate());
      }
      return arr;
    });
    const formatShow = computed(() => {
      return (type, date) => {
        if (typeof props.headerFormatter == "function") {
          if (type == "year") {
            return props.headerFormatter.apply(instance.proxy, [type, date.getFullYear()]);
          }
          if (type == "month") {
            return props.headerFormatter.apply(instance.proxy, [type, date.getMonth() + 1]);
          }
        }
        if (type == "year") {
          return dayjs(date).format("YYYY") + "年";
        }
        if (type == "month") {
          return dayjs(date).format("MM") + "月";
        }
        return "";
      };
    });
    const layerShow = () => {
      if (!layerRealProps.value.width) {
        panelRef.value.style.width = relateRef.value.offsetWidth + "px";
      }
    };
    const clickCalendar = () => {
      if (props.disabled) {
        return;
      }
      if (props.trigger == "click") {
        if (show.value) {
          closeCalendar();
        } else {
          openCalendar();
        }
      }
    };
    const dateClick = (date) => {
      emits("update:modelValue", date);
      emits("change", date);
      show.value = false;
    };
    const yearClick = (date) => {
      if (props.mode == "year") {
        emits("update:modelValue", date);
        emits("change", date);
        show.value = false;
        return;
      }
      setTimeout(() => {
        view.value = "month";
      }, 0);
    };
    const monthClick = (date) => {
      if (props.mode == "month") {
        emits("update:modelValue", date);
        emits("change", date);
        show.value = false;
        return;
      }
      setTimeout(() => {
        view.value = "date";
      }, 0);
    };
    const updateYear = (num) => {
      selectedDate.value = dayjs(selectedDate.value).add(num, "year").toDate();
      emits("update:modelValue", selectedDate.value);
      emits("change", selectedDate.value);
    };
    const updateMonth = (num) => {
      selectedDate.value = dayjs(selectedDate.value).add(num, "month").toDate();
      emits("update:modelValue", selectedDate.value);
      emits("change", selectedDate.value);
    };
    const goYear = () => {
      setTimeout(() => {
        view.value = "year";
      }, 0);
    };
    const goMonth = () => {
      setTimeout(() => {
        view.value = "month";
      }, 0);
    };
    const openCalendar = () => {
      if (props.disabled) {
        return;
      }
      show.value = true;
    };
    const closeCalendar = () => {
      if (props.disabled) {
        return;
      }
      show.value = false;
    };
    const mouseEnterRelate = () => {
      if (props.disabled) {
        return;
      }
      if (props.trigger != "hover") {
        return;
      }
      openCalendar();
    };
    const mouseLeaveRelate = (event2) => {
      if (props.disabled) {
        return;
      }
      if (props.trigger != "hover") {
        return;
      }
      if (layerRef.value && layerRef.value.$$el) {
        const layerRect = layerRef.value.$$el.getBoundingClientRect();
        if (event2.pageX >= layerRect.left && event2.pageX <= layerRect.right && event2.pageY >= layerRect.top && event2.pageY <= layerRect.bottom) {
          return;
        }
      }
      closeCalendar();
    };
    const mouseLeaveLayer = (event2) => {
      if (props.disabled) {
        return;
      }
      if (props.trigger != "hover") {
        return;
      }
      if (relateRef.value) {
        const relateRect = relateRef.value.getBoundingClientRect();
        if (event2.pageX >= relateRect.left && event2.pageX <= relateRect.right && event2.pageY >= relateRect.top && event2.pageY <= relateRect.bottom) {
          return;
        }
      }
      closeCalendar();
    };
    __expose({
      openCalendar,
      closeCalendar
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock(Fragment, null, [
        createElementVNode("div", mergeProps({
          class: ["mvi-date-chooser", { block: _ctx.block }],
          "data-id": `mvi-date-chooser-${unref(instance).uid}`,
          ref_key: "relateRef",
          ref: relateRef,
          onClick: clickCalendar,
          onMouseenter: mouseEnterRelate,
          onMouseleave: mouseLeaveRelate
        }, _ctx.$attrs), [
          renderSlot(_ctx.$slots, "default", {}, void 0, true)
        ], 16, _hoisted_1$s),
        createVNode(unref(Layer), {
          relate: `[data-id='mvi-date-chooser-${unref(instance).uid}']`,
          modelValue: show.value,
          "onUpdate:modelValue": _cache[9] || (_cache[9] = ($event) => show.value = $event),
          placement: layerRealProps.value.placement,
          offset: layerRealProps.value.offset,
          "z-index": layerRealProps.value.zIndex,
          shadow: layerRealProps.value.shadow,
          border: layerRealProps.value.border,
          animation: layerRealProps.value.animation,
          "border-color": layerRealProps.value.borderColor,
          timeout: layerRealProps.value.timeout,
          closable: _ctx.closable,
          "show-triangle": layerRealProps.value.showTriangle,
          width: layerRealProps.value.width,
          onShowing: layerShow,
          onMouseleave: mouseLeaveLayer,
          ref_key: "layerRef",
          ref: layerRef
        }, {
          default: withCtx(() => [
            createElementVNode("div", {
              class: "mvi-date-chooser-layer",
              ref_key: "panelRef",
              ref: panelRef
            }, [
              view.value == "year" ? (openBlock(), createElementBlock("div", _hoisted_2$m, [
                createElementVNode("div", {
                  class: normalizeClass(["mvi-date-chooser-year-left", [_ctx.type]]),
                  onClick: _cache[0] || (_cache[0] = ($event) => updateYear(-1))
                }, [
                  createVNode(unref(Icon), { type: "angle-double-left" })
                ], 2),
                createElementVNode("div", _hoisted_3$j, [
                  createElementVNode("span", null, toDisplayString(formatShow.value("year", years.value[0])), 1),
                  _hoisted_4$d,
                  createElementVNode("span", null, toDisplayString(formatShow.value("year", years.value[years.value.length - 1])), 1)
                ]),
                createElementVNode("div", {
                  class: normalizeClass(["mvi-date-chooser-year-right", [_ctx.type]]),
                  onClick: _cache[1] || (_cache[1] = ($event) => updateYear(1))
                }, [
                  createVNode(unref(Icon), { type: "angle-double-right" })
                ], 2)
              ])) : view.value == "month" ? (openBlock(), createElementBlock("div", _hoisted_5$8, [
                createElementVNode("div", {
                  class: normalizeClass(["mvi-date-chooser-month-left", [_ctx.type]]),
                  onClick: _cache[2] || (_cache[2] = ($event) => updateYear(-1))
                }, [
                  createVNode(unref(Icon), { type: "angle-double-left" })
                ], 2),
                createElementVNode("div", {
                  class: normalizeClass(["mvi-date-chooser-month-center", [_ctx.type]]),
                  onClick: goYear
                }, toDisplayString(formatShow.value("year", selectedDate.value)), 3),
                createElementVNode("div", {
                  class: normalizeClass(["mvi-date-chooser-month-right", [_ctx.type]]),
                  onClick: _cache[3] || (_cache[3] = ($event) => updateYear(1))
                }, [
                  createVNode(unref(Icon), { type: "angle-double-right" })
                ], 2)
              ])) : view.value == "date" ? (openBlock(), createElementBlock("div", _hoisted_6$8, [
                createElementVNode("div", _hoisted_7$7, [
                  createElementVNode("div", {
                    class: normalizeClass(_ctx.type),
                    onClick: _cache[4] || (_cache[4] = ($event) => updateYear(-1))
                  }, [
                    createVNode(unref(Icon), { type: "angle-double-left" })
                  ], 2),
                  createElementVNode("div", {
                    class: normalizeClass(_ctx.type),
                    onClick: _cache[5] || (_cache[5] = ($event) => updateMonth(-1))
                  }, [
                    createVNode(unref(Icon), { type: "angle-left" })
                  ], 2)
                ]),
                createElementVNode("div", _hoisted_8$4, [
                  createElementVNode("div", {
                    class: normalizeClass(_ctx.type),
                    onClick: goYear
                  }, toDisplayString(formatShow.value("year", selectedDate.value)), 3),
                  createElementVNode("div", {
                    class: normalizeClass(_ctx.type),
                    onClick: goMonth
                  }, toDisplayString(formatShow.value("month", selectedDate.value)), 3)
                ]),
                createElementVNode("div", _hoisted_9$3, [
                  createElementVNode("div", {
                    class: normalizeClass(_ctx.type),
                    onClick: _cache[6] || (_cache[6] = ($event) => updateMonth(1))
                  }, [
                    createVNode(unref(Icon), { type: "angle-right" })
                  ], 2),
                  createElementVNode("div", {
                    class: normalizeClass(_ctx.type),
                    onClick: _cache[7] || (_cache[7] = ($event) => updateYear(1))
                  }, [
                    createVNode(unref(Icon), { type: "angle-double-right" })
                  ], 2)
                ])
              ])) : createCommentVNode("", true),
              createVNode(unref(Calendar), {
                view: view.value,
                modelValue: selectedDate.value,
                "onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => selectedDate.value = $event),
                "month-text": _ctx.monthText,
                "week-text": _ctx.weekText,
                "start-date": _ctx.startDate,
                "end-date": _ctx.endDate,
                "non-current-click": false,
                active: _ctx.active,
                type: _ctx.type,
                onDateClick: dateClick,
                onMonthClick: monthClick,
                onYearClick: yearClick
              }, null, 8, ["view", "modelValue", "month-text", "week-text", "start-date", "end-date", "active", "type"])
            ], 512)
          ]),
          _: 1
        }, 8, ["relate", "modelValue", "placement", "offset", "z-index", "shadow", "border", "animation", "border-color", "timeout", "closable", "show-triangle", "width"])
      ], 64);
    };
  }
});
const dateChooser = /* @__PURE__ */ _export_sfc(_sfc_main$y, [["__scopeId", "data-v-1d54a060"]]);
const DateChooser = withInstall(dateChooser);
const DateNativePickerProps = {
  //选择的类型
  type: {
    type: String,
    default: "date",
    validator(value) {
      return ["date", "datetime", "month", "time"].includes(value);
    }
  },
  //日期
  modelValue: {
    type: Date,
    default: null
  },
  //最大日期
  max: {
    type: Date,
    default: null
  },
  //最小日期
  min: {
    type: Date,
    default: null
  }
};
const _hoisted_1$r = ["type", "value"];
const _sfc_main$x = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-date-native-picker"
  },
  __name: "date-native-picker",
  props: DateNativePickerProps,
  emits: ["update:modelValue", "error", "change"],
  setup(__props, { expose: __expose, emit: __emit }) {
    const props = __props;
    const emits = __emit;
    const elRef = ref(null);
    const dateType = computed(() => {
      if (props.type == "datetime") {
        return "datetime-local";
      } else {
        return props.type;
      }
    });
    const defaultDate = computed(() => {
      if (props.modelValue) {
        if (props.type == "date") {
          return dayjs(props.modelValue).format("YYYY-MM-DD");
        }
        if (props.type == "datetime") {
          return dayjs(props.modelValue).format("YYYY-MM-DD HH:mm");
        }
        if (props.type == "month") {
          return dayjs(props.modelValue).format("YYYY-MM");
        }
        if (props.type == "time") {
          return dayjs(props.modelValue).format("HH:mm");
        }
      }
      return "";
    });
    const selectDate = () => {
      if (elRef.value.value) {
        let val = props.type == "time" ? `${dayjs(props.modelValue).format("YYYY-MM-DD")} ${elRef.value.value}` : elRef.value.value;
        const date = dayjs(val);
        if (props.min && date.isBefore(dayjs(props.min))) {
          emits("error", 0, "The date is less than min");
          return;
        }
        if (props.max && dayjs(props.max).isBefore(date)) {
          emits("error", 1, "The date is greater than max");
          return;
        }
        emits("update:modelValue", date.toDate());
        emits("change", date.toDate());
      } else {
        emits("update:modelValue", null);
        emits("change", null);
      }
    };
    const selectDateForIOS = () => {
      const ios = obj.platform.os().ios;
      const iPad = obj.platform.device().iPad;
      if (ios && !iPad) {
        selectDate();
      }
    };
    const selectDateForAndroid = () => {
      const ios = obj.platform.os().ios;
      const iPad = obj.platform.device().iPad;
      if (!ios || iPad) {
        selectDate();
      }
    };
    const trigger = () => {
      const ios = obj.platform.os().ios;
      const iPad = obj.platform.device().iPad;
      if (ios && !iPad) {
        elRef.value.focus();
      } else {
        elRef.value.click();
      }
    };
    __expose({
      trigger
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("input", {
        ref_key: "elRef",
        ref: elRef,
        onBlur: selectDateForIOS,
        onChange: selectDateForAndroid,
        class: "mvi-date-native-picker",
        type: dateType.value,
        value: defaultDate.value
      }, null, 40, _hoisted_1$r);
    };
  }
});
const dateNativePicker = /* @__PURE__ */ _export_sfc(_sfc_main$x, [["__scopeId", "data-v-a399825b"]]);
const DateNativePicker = withInstall(dateNativePicker);
const PickerProps = {
  //选择器配置
  options: {
    type: [Array, Object],
    default: function() {
      return {
        values: [],
        defaultIndex: 0
      };
    }
  },
  //是否显示标题栏
  showToolbar: {
    type: Boolean,
    default: true
  },
  //标题
  title: {
    type: String,
    default: null
  },
  //确认文字
  confirmText: {
    type: String,
    default: "确定"
  },
  //取消文字
  cancelText: {
    type: String,
    default: "取消"
  },
  //是否显示加载状态
  loading: {
    type: Boolean,
    default: false
  },
  //可见选项个数
  visibleCounts: {
    type: Number,
    default: 5
  },
  //选择框高度
  selectHeight: {
    type: String,
    default: "0.88rem"
  }
};
const _hoisted_1$q = { class: "mvi-picker" };
const _hoisted_2$l = {
  key: 1,
  class: "mvi-picker-toolbar"
};
const _hoisted_3$i = ["textContent"];
const _hoisted_4$c = ["textContent"];
const _hoisted_5$7 = ["textContent"];
const _hoisted_6$7 = ["onTouchstart", "onMousedown"];
const _hoisted_7$6 = ["textContent"];
const _sfc_main$w = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-picker"
  },
  __name: "picker",
  props: PickerProps,
  emits: ["confirm", "cancel", "change"],
  setup(__props, { emit: __emit }) {
    const instance = getCurrentInstance();
    const props = __props;
    const emits = __emit;
    const itemRefs = ref([]);
    const offsets = ref([]);
    const startY = ref(0);
    const startY2 = ref(0);
    const time = ref(0);
    const oldActives = ref([]);
    const amounts = ref(0);
    const mouseDown = ref(false);
    const columnIndex = ref(0);
    const startTimeStamp = ref(0);
    const endTimeStamp = ref(0);
    const cmpHeight = computed(() => {
      if (props.selectHeight.includes("px")) {
        return parseFloat(props.selectHeight);
      }
      if (props.selectHeight.includes("rem")) {
        return obj.element.rem2px(parseFloat(props.selectHeight));
      }
      return 0;
    });
    const loadingStyle = computed(() => {
      let style = {};
      style.height = `calc(${obj.number.mutiply(cmpHeight.value, props.visibleCounts)}px + 0.88rem)`;
      return style;
    });
    const contentStyle = computed(() => {
      let style = {};
      style.height = `${obj.number.mutiply(cmpHeight.value, props.visibleCounts)}px`;
      return style;
    });
    const cmpOptions = computed(() => {
      let op = [];
      if (Array.isArray(props.options)) {
        op = props.options;
      } else {
        op = [props.options];
      }
      return op;
    });
    const columnStyle = computed(() => {
      return (index) => {
        let style = {};
        style.transform = `translate3d(0,${offsets.value[index] || 0}px,0)`;
        return style;
      };
    });
    const actives = computed(() => {
      let arr = [];
      for (let i = 0; i < offsets.value.length; i++) {
        arr.push({
          index: getActive(offsets.value[i]),
          value: cmpOptions.value[i].values[getActive(offsets.value[i])]
        });
      }
      return arr;
    });
    const maskStyle = computed(() => {
      let style = {};
      if (props.selectHeight) {
        style.backgroundSize = "100% " + obj.number.mutiply(cmpHeight.value, obj.number.divide(props.visibleCounts - 1, 2)) + "px";
      }
      return style;
    });
    const getOffset = (index) => {
      return obj.number.mutiply(obj.number.subtract(obj.number.divide(props.visibleCounts - 1, 2), index), cmpHeight.value);
    };
    const getActive = (value) => {
      let num = Math.abs(obj.number.divide(value - obj.number.mutiply(obj.number.divide(props.visibleCounts - 1, 2), cmpHeight.value), cmpHeight.value));
      return Math.round(num);
    };
    const addTransition = (index, timeout) => {
      return new Promise((resolve) => {
        itemRefs.value[index].style.transition = "all " + timeout + "ms ease-out";
        setTimeout(() => {
          resolve();
        }, 0);
      });
    };
    const removeTransition = (index) => {
      return new Promise((resolve) => {
        itemRefs.value[index].style.transition = "";
        setTimeout(() => {
          resolve();
        }, 0);
      });
    };
    const crisis = (index) => {
      let max = obj.number.divide(props.visibleCounts - 1, 2);
      max = obj.number.mutiply(max, cmpHeight.value);
      let min = -obj.number.divide(props.visibleCounts - 1, 2);
      min = obj.number.mutiply(min, cmpHeight.value);
      min += obj.number.mutiply(props.visibleCounts - cmpOptions.value[index].values.length, cmpHeight.value);
      return {
        max,
        min
      };
    };
    const endDeal = (moveTotal, timeout) => {
      if (moveTotal > 0) {
        if (offsets.value[columnIndex.value] >= crisis(columnIndex.value).max) {
          offsets.value[columnIndex.value] = crisis(columnIndex.value).max;
        } else {
          let order = getActive(offsets.value[columnIndex.value]);
          offsets.value[columnIndex.value] = getOffset(order);
        }
      } else {
        if (offsets.value[columnIndex.value] <= crisis(columnIndex.value).min) {
          offsets.value[columnIndex.value] = crisis(columnIndex.value).min;
        } else {
          let order = getActive(offsets.value[columnIndex.value]);
          offsets.value[columnIndex.value] = getOffset(order);
        }
      }
      if (actives.value.length == 1) {
        if (actives.value[0].index != oldActives.value[0].index) {
          emits("change", columnIndex.value, actives.value[0]);
        }
      } else {
        let flag = true;
        for (let i = 0; i < oldActives.value.length; i++) {
          if (oldActives.value[i].index != actives.value[i].index) {
            flag = false;
          }
        }
        if (!flag) {
          emits("change", columnIndex.value, actives.value);
        }
      }
      setTimeout(() => {
        removeTransition(columnIndex.value);
      }, timeout);
    };
    const init = () => {
      offsets.value = [];
      for (let i = 0; i < cmpOptions.value.length; i++) {
        offsets.value.push(getOffset(cmpOptions.value[i].defaultIndex || 0));
      }
    };
    const doConfirm = () => {
      if (actives.value.length == 1) {
        emits("confirm", actives.value[0]);
      } else {
        emits("confirm", actives.value);
      }
    };
    const doCancel = () => {
      init();
      if (actives.value.length == 1) {
        emits("cancel", actives.value[0]);
      } else {
        emits("cancel", actives.value);
      }
    };
    const touchstart = (event2, index) => {
      startY.value = event2.targetTouches[0].pageY;
      startY2.value = startY.value;
      time.value = Date.now();
      oldActives.value = actives.value;
      amounts.value = 0;
      columnIndex.value = index;
      startTimeStamp.value = Date.now();
    };
    const mousedown = (event2, index) => {
      startY.value = event2.pageY;
      startY2.value = startY.value;
      time.value = Date.now();
      oldActives.value = actives.value;
      amounts.value = 0;
      mouseDown.value = true;
      columnIndex.value = index;
      startTimeStamp.value = Date.now();
    };
    const touchmove = (event2) => {
      if (event2.cancelable) {
        event2.preventDefault();
      }
      let endY = event2.targetTouches[0].pageY;
      let moveY = endY - startY.value;
      let moveY2 = endY - startY2.value;
      if (offsets.value[columnIndex.value] >= crisis(columnIndex.value).max && moveY2 > 0) {
        amounts.value += 5;
        offsets.value[columnIndex.value] = offsets.value[columnIndex.value] + moveY / amounts.value;
        return;
      }
      if (offsets.value[columnIndex.value] <= crisis(columnIndex.value).min && moveY2 < 0) {
        amounts.value += 5;
        offsets.value[columnIndex.value] = offsets.value[columnIndex.value] + moveY / amounts.value;
        return;
      }
      offsets.value[columnIndex.value] = offsets.value[columnIndex.value] + moveY / 1.6;
      startY.value = endY;
    };
    const mousemove = (event2) => {
      if (!mouseDown.value) {
        return;
      }
      if (event2.cancelable) {
        event2.preventDefault();
      }
      let endY = event2.pageY;
      let moveY = endY - startY.value;
      let moveY2 = endY - startY2.value;
      if (offsets.value[columnIndex.value] >= crisis(columnIndex.value).max && moveY2 > 0) {
        amounts.value += 5;
        offsets.value[columnIndex.value] = offsets.value[columnIndex.value] + moveY / amounts.value;
        return;
      }
      if (offsets.value[columnIndex.value] <= crisis(columnIndex.value).min && moveY2 < 0) {
        amounts.value += 5;
        offsets.value[columnIndex.value] = offsets.value[columnIndex.value] + moveY / amounts.value;
        return;
      }
      offsets.value[columnIndex.value] = offsets.value[columnIndex.value] + moveY / 1.6;
      startY.value = endY;
    };
    const touchend = (event2) => {
      endTimeStamp.value = Date.now();
      let moveTotal = event2.changedTouches[0].pageY - startY2.value;
      let totalTimeStamp = endTimeStamp.value - startTimeStamp.value;
      if (totalTimeStamp < 300 && Math.abs(moveTotal) > cmpHeight.value) {
        addTransition(columnIndex.value, 1e3).then(() => {
          if (moveTotal > 0) {
            offsets.value[columnIndex.value] = offsets.value[columnIndex.value] + obj.element.rem2px(10) * totalTimeStamp / 1e3;
          } else {
            offsets.value[columnIndex.value] = offsets.value[columnIndex.value] - obj.element.rem2px(10) * totalTimeStamp / 1e3;
          }
          return addTransition(columnIndex.value, 300);
        }).then(() => {
          endDeal(moveTotal, 300);
        });
      } else {
        addTransition(columnIndex.value, 300).then(() => {
          endDeal(moveTotal, 300);
        });
      }
    };
    const mouseup = (event2) => {
      if (!mouseDown.value) {
        return;
      }
      mouseDown.value = false;
      endTimeStamp.value = Date.now();
      let moveTotal = event2.pageY - startY2.value;
      let totalTimeStamp = endTimeStamp.value - startTimeStamp.value;
      if (totalTimeStamp < 300 && Math.abs(moveTotal) > cmpHeight.value) {
        addTransition(columnIndex.value, 1e3).then(() => {
          if (moveTotal > 0) {
            offsets.value[columnIndex.value] = offsets.value[columnIndex.value] + obj.element.rem2px(10) * totalTimeStamp / 1e3;
          } else {
            offsets.value[columnIndex.value] = offsets.value[columnIndex.value] - obj.element.rem2px(10) * totalTimeStamp / 1e3;
          }
          return addTransition(columnIndex.value, 300);
        }).then(() => {
          endDeal(moveTotal, 300);
        });
      } else {
        addTransition(columnIndex.value, 300).then(() => {
          endDeal(moveTotal, 300);
        });
      }
    };
    const contentTouchMove = (event2) => {
      if (event2.cancelable) {
        event2.preventDefault();
      }
    };
    watch(
      () => cmpOptions.value,
      () => {
        init();
      }
    );
    onMounted(() => {
      init();
      obj.event.on(document.documentElement, `mousemove.picker_${instance.uid}`, mousemove);
      obj.event.on(document.documentElement, `mouseup.picker_${instance.uid}`, mouseup);
    });
    onBeforeUnmount(() => {
      obj.event.off(document.documentElement, `mousemove.picker_${instance.uid} mouseup.picker_${instance.uid}`);
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", _hoisted_1$q, [
        _ctx.loading ? (openBlock(), createElementBlock("div", {
          key: 0,
          class: "mvi-picker-loading",
          style: normalizeStyle(loadingStyle.value)
        }, [
          createVNode(unref(Loading), { size: "0.5rem" })
        ], 4)) : createCommentVNode("", true),
        _ctx.showToolbar && !_ctx.loading ? (openBlock(), createElementBlock("div", _hoisted_2$l, [
          createElementVNode("div", {
            class: "mvi-picker-toolbar-cancel",
            textContent: toDisplayString(_ctx.cancelText),
            onClick: doCancel
          }, null, 8, _hoisted_3$i),
          _ctx.title ? (openBlock(), createElementBlock("div", {
            key: 0,
            class: "mvi-picker-toolbar-title",
            textContent: toDisplayString(_ctx.title)
          }, null, 8, _hoisted_4$c)) : createCommentVNode("", true),
          createElementVNode("div", {
            class: "mvi-picker-toolbar-confirm",
            textContent: toDisplayString(_ctx.confirmText),
            onClick: doConfirm
          }, null, 8, _hoisted_5$7)
        ])) : createCommentVNode("", true),
        !_ctx.loading ? (openBlock(), createElementBlock("div", {
          key: 2,
          class: "mvi-picker-content",
          style: normalizeStyle(contentStyle.value),
          ref: "content",
          onTouchmove: contentTouchMove
        }, [
          (openBlock(true), createElementBlock(Fragment, null, renderList(cmpOptions.value, (column, index) => {
            return openBlock(), createElementBlock("div", {
              class: "mvi-picker-items",
              ref_for: true,
              ref: (el) => itemRefs.value[index] = el,
              style: normalizeStyle(columnStyle.value(index)),
              onTouchstart: ($event) => touchstart($event, index),
              onTouchmove: touchmove,
              onTouchend: touchend,
              onMousedown: ($event) => mousedown($event, index)
            }, [
              (openBlock(true), createElementBlock(Fragment, null, renderList(column.values, (item) => {
                return openBlock(), createElementBlock("div", {
                  class: "mvi-picker-item",
                  style: normalizeStyle({ height: _ctx.selectHeight || "" })
                }, [
                  createElementVNode("div", {
                    textContent: toDisplayString(item)
                  }, null, 8, _hoisted_7$6)
                ], 4);
              }), 256))
            ], 44, _hoisted_6$7);
          }), 256)),
          createElementVNode("div", {
            class: "mvi-picker-active",
            style: normalizeStyle({ height: _ctx.selectHeight || "" })
          }, null, 4),
          createElementVNode("div", {
            class: "mvi-picker-mask",
            style: normalizeStyle(maskStyle.value)
          }, null, 4)
        ], 36)) : createCommentVNode("", true)
      ]);
    };
  }
});
const picker = /* @__PURE__ */ _export_sfc(_sfc_main$w, [["__scopeId", "data-v-64671570"]]);
const Picker = withInstall(picker);
const ProgressProps = {
  //当前进度值
  value: {
    type: Number,
    default: 0
  },
  //最大值
  max: {
    type: Number,
    default: 100
  },
  //最小值
  min: {
    type: Number,
    default: 0
  },
  //进度条粗细
  strokeWidth: {
    type: String,
    default: null
  },
  //是否显示进度文字
  showTip: {
    type: Boolean,
    default: false
  },
  //进度条颜色
  color: {
    type: String,
    default: null
  },
  //进度文字颜色
  tipColor: {
    type: String,
    default: null
  },
  //轨道颜色
  trackColor: {
    type: String,
    default: null
  },
  //进度显示的文字，默认为百分比
  tipText: {
    type: String,
    default: null
  },
  //显示圆角
  round: {
    type: Boolean,
    default: false
  },
  //无角度
  square: {
    type: Boolean,
    default: false
  },
  //是否开启动画效果
  animation: {
    type: Boolean,
    default: false
  },
  //动画效果时长
  timeout: {
    type: Number,
    default: 400
  }
};
const _hoisted_1$p = ["textContent"];
const _sfc_main$v = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-progress"
  },
  __name: "progress",
  props: ProgressProps,
  setup(__props) {
    const props = __props;
    const progressStyle = computed(() => {
      let style = {};
      if (props.strokeWidth) {
        style.height = props.strokeWidth;
      }
      if (props.trackColor) {
        style.backgroundColor = props.trackColor;
      }
      return style;
    });
    const progressBarStyle = computed(() => {
      let style = {};
      if (props.animation) {
        style.transition = "width " + props.timeout + "ms,border-radius " + props.timeout + "ms";
      }
      if (props.color) {
        style.backgroundColor = props.color;
      }
      if (props.value == props.max) {
        style.borderRadius = "inherit";
      }
      style.width = `calc(${(props.value - props.min < 0 ? 0 : props.value - props.min) / (props.max - props.min)} * 100%)`;
      return style;
    });
    const cmpText = computed(() => {
      if (props.tipText) {
        return props.tipText;
      }
      return Math.round((props.value - props.min < 0 ? 0 : props.value - props.min) / (props.max - props.min) * 100) + "%";
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["mvi-progress", { round: _ctx.round, square: !_ctx.round && _ctx.square }]),
        style: normalizeStyle(progressStyle.value)
      }, [
        createElementVNode("div", {
          class: "mvi-progress-bar",
          style: normalizeStyle(progressBarStyle.value)
        }, [
          _ctx.showTip ? (openBlock(), createElementBlock("div", {
            key: 0,
            class: "mvi-progress-tooltip",
            style: normalizeStyle({ color: _ctx.tipColor || "" })
          }, [
            _ctx.$slots.tip ? renderSlot(_ctx.$slots, "tip", {
              key: 0,
              value: _ctx.value
            }, void 0, true) : (openBlock(), createElementBlock("span", {
              key: 1,
              textContent: toDisplayString(cmpText.value)
            }, null, 8, _hoisted_1$p))
          ], 4)) : createCommentVNode("", true)
        ], 4)
      ], 6);
    };
  }
});
const progress = /* @__PURE__ */ _export_sfc(_sfc_main$v, [["__scopeId", "data-v-6b0d259d"]]);
const Progress = withInstall(progress);
const SliderProps = {
  //当前值
  modelValue: {
    type: Number,
    default: 0
  },
  //最小值
  min: {
    type: Number,
    default: 0
  },
  //最大值
  max: {
    type: Number,
    default: 100
  },
  //进度粗细
  strokeWidth: {
    type: String,
    default: "0.2rem"
  },
  //激活的进度颜色
  color: {
    type: String,
    default: null
  },
  //滑轨颜色
  trackColor: {
    type: String,
    default: null
  },
  //是否禁用
  disabled: {
    type: Boolean,
    default: false
  },
  //是否垂直
  vertical: {
    type: Boolean,
    default: false
  },
  //滑动条是否显示圆形的圆角弧度
  round: {
    type: Boolean,
    default: false
  },
  //滑动条是否不显示圆角弧度
  square: {
    type: Boolean,
    default: false
  }
};
const _hoisted_1$o = ["disabled"];
const _sfc_main$u = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-slider"
  },
  __name: "slider",
  props: SliderProps,
  emits: ["update:modelValue", "change"],
  setup(__props, { emit: __emit }) {
    const props = __props;
    const emits = __emit;
    const drag = ref(null);
    const isdrag = ref(false);
    const btnRef = ref(null);
    const barRef = ref(null);
    const elRef = ref(null);
    const sliderStyle = computed(() => {
      let style = {};
      if (props.trackColor) {
        style.background = props.trackColor;
      }
      if (props.strokeWidth) {
        if (props.vertical) {
          style.width = props.strokeWidth;
        } else {
          style.height = props.strokeWidth;
        }
      }
      return style;
    });
    const sliderBarStyle = computed(() => {
      let style = {};
      if (props.color) {
        style.background = props.color;
      }
      let percent = obj.number.divide(obj.number.subtract(props.modelValue, props.min), obj.number.subtract(props.max, props.min));
      if (props.vertical) {
        style.height = `calc(${percent} * 100%)`;
      } else {
        style.width = `calc(${percent} * 100%)`;
      }
      return style;
    });
    const buttonElStyle = computed(() => {
      let style = {};
      if (props.strokeWidth) {
        style.width = `calc(${props.strokeWidth} * 2)`;
        style.height = `calc(${props.strokeWidth} * 2)`;
      }
      return style;
    });
    watch(
      () => props.disabled,
      (newValue) => {
        if (drag.value) {
          if (newValue) {
            if (props.vertical) {
              drag.value.draggableY = false;
            } else {
              drag.value.draggableX = false;
            }
          } else {
            if (props.vertical) {
              drag.value.draggableY = true;
            } else {
              drag.value.draggableX = true;
            }
          }
        }
      }
    );
    watch(
      () => props.vertical,
      () => {
        nextTick(() => {
          setBtnOffset();
        });
      }
    );
    watch(
      () => props.modelValue,
      () => {
        if (!isdrag.value) {
          setBtnOffset();
        }
      }
    );
    const onDrag = (_el, _container, placement) => {
      isdrag.value = true;
      if (props.vertical) {
        let value = obj.number.add(obj.number.mutiply(obj.number.divide(obj.number.add(placement.top, obj.number.divide(btnRef.value.offsetHeight, 2)), elRef.value.offsetHeight), obj.number.subtract(props.max, props.min)), props.min);
        emits("update:modelValue", value);
        emits("change", value);
      } else {
        let value = obj.number.add(obj.number.mutiply(obj.number.divide(obj.number.add(placement.left, obj.number.divide(btnRef.value.offsetWidth, 2)), elRef.value.offsetWidth), obj.number.subtract(props.max - props.min)), props.min);
        emits("update:modelValue", value);
        emits("change", value);
      }
    };
    const setBtnOffset = () => {
      if (props.vertical) {
        btnRef.value.style.left = "50%";
        btnRef.value.style.top = obj.number.subtract(obj.number.mutiply(obj.number.divide(obj.number.subtract(props.modelValue, props.min), obj.number.subtract(props.max - props.min)), elRef.value.offsetHeight), obj.number.divide(btnRef.value.offsetHeight, 2)) + "px";
      } else {
        btnRef.value.style.top = "50%";
        btnRef.value.style.left = obj.number.subtract(obj.number.mutiply(obj.number.divide(obj.number.subtract(props.modelValue, props.min), obj.number.subtract(props.max - props.min)), elRef.value.offsetWidth), obj.number.divide(btnRef.value.offsetWidth, 2)) + "px";
      }
    };
    const dragTo = (event2) => {
      if (props.disabled) {
        return;
      }
      if (isdrag.value) {
        return;
      }
      if (obj.element.isContains(btnRef.value, event2.target)) {
        return;
      }
      if (props.vertical) {
        let top = event2.offsetY;
        let value = obj.number.add(obj.number.mutiply(obj.number.divide(top, elRef.value.offsetHeight), obj.number.subtract(props.max, props.min)), props.min);
        emits("update:modelValue", value);
        emits("change", value);
      } else {
        let left = event2.offsetX;
        let value = obj.number.add(obj.number.mutiply(obj.number.divide(left, elRef.value.offsetWidth), obj.number.subtract(props.max, props.min)), props.min);
        emits("update:modelValue", value);
        emits("change", value);
      }
    };
    onMounted(() => {
      setBtnOffset();
      drag.value = new Drag$1(btnRef.value, {
        container: elRef.value,
        mode: "on",
        draggableY: props.vertical && !props.disabled,
        draggableX: !props.vertical && !props.disabled,
        cursor: false,
        drag: onDrag,
        dragged: () => {
          nextTick(() => {
            setTimeout(() => {
              isdrag.value = false;
            }, 10);
          });
        }
      });
      drag.value.init();
    });
    onBeforeUnmount(() => {
      if (drag.value) {
        drag.value.destroy();
      }
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        disabled: _ctx.disabled || null,
        class: normalizeClass(["mvi-slider", { round: _ctx.round, square: !_ctx.round && _ctx.square, vertical: _ctx.vertical }]),
        style: normalizeStyle(sliderStyle.value),
        onClick: dragTo,
        ref_key: "elRef",
        ref: elRef
      }, [
        createElementVNode("div", {
          ref_key: "barRef",
          ref: barRef,
          class: "mvi-slider-bar",
          style: normalizeStyle(sliderBarStyle.value)
        }, null, 4),
        createElementVNode("div", {
          class: "mvi-slider-button",
          ref_key: "btnRef",
          ref: btnRef
        }, [
          _ctx.$slots.button ? renderSlot(_ctx.$slots, "button", { key: 0 }, void 0, true) : (openBlock(), createElementBlock("div", {
            key: 1,
            class: "mvi-slider-button-el",
            style: normalizeStyle(buttonElStyle.value)
          }, null, 4))
        ], 512)
      ], 14, _hoisted_1$o);
    };
  }
});
const slider = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["__scopeId", "data-v-03da2868"]]);
const Slider = withInstall(slider);
const DatePickerProps = {
  //日期值
  modelValue: {
    type: Date,
    default: function() {
      return /* @__PURE__ */ new Date();
    }
  },
  //默认开始时间1970年1月1日00:00
  startDate: {
    type: Date,
    default: function() {
      return dayjs("1970-01-01 00:00:00").toDate();
    }
  },
  //默认结束时间2099年12月31日23:59
  endDate: {
    type: Date,
    default: function() {
      return dayjs("2099-12-31 23:59:59").toDate();
    }
  },
  //模式
  mode: {
    type: String,
    default: "date",
    validator(value) {
      return ["date", "datetime", "time", "month", "year"].includes(value);
    }
  },
  //是否显示顶部标题栏
  showToolbar: {
    type: Boolean,
    default: true
  },
  //标题
  title: {
    type: String,
    default: null
  },
  //确认文字
  confirmText: {
    type: String,
    default: "确定"
  },
  //取消文字
  cancelText: {
    type: String,
    default: "取消"
  },
  //是否显示加载状态
  loading: {
    type: Boolean,
    default: false
  },
  //可见选项个数
  visibleCounts: {
    type: Number,
    default: 5
  },
  //选择框高度
  selectHeight: {
    type: String,
    default: "0.88rem"
  },
  //格式化函数
  formatter: {
    type: Function,
    default: null
  }
};
const _hoisted_1$n = { class: "mvi-date-picker" };
const _sfc_main$t = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-date-picker"
  },
  __name: "date-picker",
  props: DatePickerProps,
  emits: ["update:modelValue", "confirm", "cancel", "change"],
  setup(__props, { emit: __emit }) {
    const instance = getCurrentInstance();
    const props = __props;
    const emits = __emit;
    const selectedDate = computed({
      set(value) {
        if (value instanceof Date) {
          const unit = getUnit();
          if (dayjs(value).isBefore(dayjs(props.startDate), unit)) {
            value = props.startDate;
          }
          if (dayjs(value).isAfter(dayjs(props.endDate), unit)) {
            value = props.endDate;
          }
        }
        emits("update:modelValue", value);
        emits("change", value);
      },
      get() {
        if (props.modelValue instanceof Date) {
          const unit = getUnit();
          if (dayjs(props.modelValue).isBefore(dayjs(props.startDate), unit)) {
            return props.startDate;
          }
          if (dayjs(props.modelValue).isAfter(dayjs(props.endDate), unit)) {
            return props.endDate;
          }
          return props.modelValue;
        }
        return /* @__PURE__ */ new Date();
      }
    });
    const years = computed(() => {
      let arr = [];
      let currentYear = props.startDate.getFullYear();
      while (currentYear <= props.endDate.getFullYear()) {
        arr.push(currentYear);
        currentYear++;
      }
      return arr;
    });
    const months = computed(() => {
      const format = dayjs(selectedDate.value).format("YYYY");
      let arr = [];
      for (let i = 1; i <= 12; i++) {
        if (dayjs(`${format}-${i < 10 ? "0" + i : i}`).isBefore(dayjs(props.startDate), "month")) {
          continue;
        }
        if (dayjs(`${format}-${i < 10 ? "0" + i : i}`).isAfter(dayjs(props.endDate), "month")) {
          continue;
        }
        arr.push(i);
      }
      return arr;
    });
    const days = computed(() => {
      const format = dayjs(selectedDate.value).format("YYYY-MM");
      let arr = [];
      const total = dayjs(selectedDate.value).daysInMonth();
      for (let i = 1; i <= total; i++) {
        if (dayjs(`${format}-${i < 10 ? "0" + i : i}`).isBefore(dayjs(props.startDate), "date")) {
          continue;
        }
        if (dayjs(`${format}-${i < 10 ? "0" + i : i}`).isAfter(dayjs(props.endDate), "date")) {
          continue;
        }
        arr.push(i);
      }
      return arr;
    });
    const hours = computed(() => {
      const format = dayjs(selectedDate.value).format("YYYY-MM-DD");
      let arr = [];
      for (let i = 0; i < 24; i++) {
        if (dayjs(`${format} ${i < 10 ? "0" + i : i}`).isBefore(dayjs(props.startDate), "hour")) {
          continue;
        }
        if (dayjs(`${format} ${i < 10 ? "0" + i : i}`).isAfter(dayjs(props.endDate), "hour")) {
          continue;
        }
        arr.push(i);
      }
      return arr;
    });
    const minutes = computed(() => {
      const format = dayjs(selectedDate.value).format("YYYY-MM-DD HH");
      let arr = [];
      for (let i = 0; i < 60; i++) {
        if (dayjs(`${format}:${i < 10 ? "0" + i : i}`).isBefore(dayjs(props.startDate), "minute")) {
          continue;
        }
        if (dayjs(`${format}:${i < 10 ? "0" + i : i}`).isAfter(dayjs(props.endDate), "minute")) {
          continue;
        }
        arr.push(i);
      }
      return arr;
    });
    const pickerOptions = computed(() => {
      const yearColumn = {
        defaultIndex: years.value.findIndex((item) => {
          return item == selectedDate.value.getFullYear();
        }),
        values: years.value.map((item) => {
          if (typeof props.formatter == "function") {
            return props.formatter.apply(instance.proxy, ["year", item]);
          }
          return `${item}年`;
        })
      };
      const monthColumn = {
        defaultIndex: months.value.findIndex((item) => {
          return item == selectedDate.value.getMonth() + 1;
        }),
        values: months.value.map((item) => {
          if (typeof props.formatter == "function") {
            return props.formatter.apply(instance.proxy, ["month", item]);
          }
          return `${item}月`;
        })
      };
      const dateColumn = {
        defaultIndex: days.value.findIndex((item) => {
          return item == selectedDate.value.getDate();
        }),
        values: days.value.map((item) => {
          if (typeof props.formatter == "function") {
            return props.formatter.apply(instance.proxy, ["date", item]);
          }
          return `${item}日`;
        })
      };
      const hourColumn = {
        defaultIndex: hours.value.findIndex((item) => {
          return item == selectedDate.value.getHours();
        }),
        values: hours.value.map((item) => {
          if (typeof props.formatter == "function") {
            return props.formatter.apply(instance.proxy, ["hour", item]);
          }
          return `${item}时`;
        })
      };
      const minuteColumn = {
        defaultIndex: minutes.value.findIndex((item) => {
          return item == selectedDate.value.getMinutes();
        }),
        values: minutes.value.map((item) => {
          if (typeof props.formatter == "function") {
            return props.formatter.apply(instance.proxy, ["minute", item]);
          }
          return `${item}分`;
        })
      };
      if (props.mode == "year") {
        return yearColumn;
      }
      if (props.mode == "month") {
        return [yearColumn, monthColumn];
      }
      if (props.mode == "date") {
        return [yearColumn, monthColumn, dateColumn];
      }
      if (props.mode == "datetime") {
        return [yearColumn, monthColumn, dateColumn, hourColumn, minuteColumn];
      }
      if (props.mode == "time") {
        return [hourColumn, minuteColumn];
      }
      return [];
    });
    const getUnit = () => {
      if (props.mode == "year") {
        return "year";
      }
      if (props.mode == "month") {
        return "month";
      }
      if (props.mode == "date") {
        return "date";
      }
      if (props.mode == "time" || props.mode == "datetime") {
        return "minute";
      }
    };
    const updateYear = (year) => {
      selectedDate.value = dayjs(selectedDate.value).year(year).toDate();
    };
    const updateMonth = (month) => {
      selectedDate.value = dayjs(selectedDate.value).month(month - 1).toDate();
    };
    const updateDay = (day) => {
      selectedDate.value = dayjs(selectedDate.value).date(day).toDate();
    };
    const updateHour = (hour) => {
      selectedDate.value = dayjs(selectedDate.value).hour(hour).toDate();
    };
    const updateMinute = (minute) => {
      selectedDate.value = dayjs(selectedDate.value).minute(minute).toDate();
    };
    const dateChange = (column, item) => {
      if (props.mode == "year") {
        updateYear(years.value[item.index]);
      } else if (props.mode == "month") {
        if (column == 0) {
          updateYear(years.value[item[column].index]);
        } else {
          updateMonth(months.value[item[column].index]);
        }
      } else if (props.mode == "date") {
        if (column == 0) {
          updateYear(years.value[item[column].index]);
        } else if (column == 1) {
          updateMonth(months.value[item[column].index]);
        } else {
          updateDay(days.value[item[column].index]);
        }
      } else if (props.mode == "time") {
        if (column == 0) {
          updateHour(hours.value[item[column].index]);
        } else {
          updateMinute(minutes.value[item[column].index]);
        }
      } else if (props.mode == "datetime") {
        if (column == 0) {
          updateYear(years.value[item[column].index]);
        } else if (column == 1) {
          updateMonth(months.value[item[column].index]);
        } else if (column == 2) {
          updateDay(days.value[item[column].index]);
        } else if (column == 3) {
          updateHour(hours.value[item[column].index]);
        } else {
          updateMinute(minutes.value[item[column].index]);
        }
      }
    };
    const doConfirm = () => {
      emits("confirm", selectedDate.value);
    };
    const doCancel = () => {
      emits("cancel", selectedDate.value);
    };
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", _hoisted_1$n, [
        createVNode(unref(Picker), {
          options: pickerOptions.value,
          "show-toolbar": _ctx.showToolbar,
          title: _ctx.title,
          "confirm-text": _ctx.confirmText,
          "cancel-text": _ctx.cancelText,
          loading: _ctx.loading,
          "visible-counts": _ctx.visibleCounts,
          "select-height": _ctx.selectHeight,
          onChange: dateChange,
          onConfirm: doConfirm,
          onCancel: doCancel
        }, null, 8, ["options", "show-toolbar", "title", "confirm-text", "cancel-text", "loading", "visible-counts", "select-height"])
      ]);
    };
  }
});
const datePicker = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["__scopeId", "data-v-be140d91"]]);
const DatePicker = withInstall(datePicker);
const FieldProps = {
  //输入框的值
  modelValue: {
    type: [String, Number],
    default: ""
  },
  //是否禁用
  disabled: {
    type: Boolean,
    default: false
  },
  //是否只读
  readonly: {
    type: Boolean,
    default: false
  },
  //输入框的占位符
  placeholder: {
    type: String,
    default: ""
  },
  //输入框类型
  type: {
    type: String,
    default: "text",
    validator(value) {
      return ["text", "password", "number", "tel", "textarea"].includes(value);
    }
  },
  //输入框大小
  size: {
    type: String,
    default: "medium",
    validator(value) {
      return ["small", "medium", "large"].includes(value);
    }
  },
  //输入框最大字符长度
  maxlength: {
    type: Number,
    default: -1
  },
  //输入框是否圆角
  round: {
    type: Boolean,
    default: false
  },
  //输入框是否方形
  square: {
    type: Boolean,
    default: false
  },
  //前缀
  prefix: {
    type: [String, Object],
    default: null
  },
  //后缀
  suffix: {
    type: [String, Object],
    default: null
  },
  //前置
  prepend: {
    type: [String, Object],
    default: null
  },
  //后置
  append: {
    type: [String, Object],
    default: null
  },
  //点击样式
  activeType: {
    type: String,
    default: "info",
    validator(value) {
      return ["info", "success", "warn", "primary", "error"].includes(value);
    }
  },
  //点击颜色
  activeColor: {
    type: String,
    default: null,
    validator(value) {
      return obj.common.matchingText(value, "hex");
    }
  },
  //是否使用清除图标
  clearable: {
    type: Boolean,
    default: false
  },
  //输入框内容对齐方式
  align: {
    type: String,
    default: "left",
    validator(value) {
      return ["left", "center", "right"].includes(value);
    }
  },
  //原生name
  name: {
    type: String,
    default: null
  },
  //是否自动获取焦点
  autofocus: {
    type: Boolean,
    default: false
  },
  //输入框调起移动端键盘类型
  inputMode: {
    type: String,
    default: "text",
    validator(value) {
      return ["none", "text", "decimal", "numeric", "tel", "search", "email", "url"].includes(value);
    }
  },
  //文本域行数
  rows: {
    type: Number,
    default: 1
  },
  //文本域高度自适应
  autosize: {
    type: [Boolean, Object],
    default: false,
    validator(value) {
      if (obj.common.isObject(value)) {
        if (obj.number.isNumber(value.minRows) && obj.number.isNumber(value.maxRows)) {
          if (value.minRows > value.maxRows) {
            return false;
          }
        }
      }
      return true;
    }
  }
};
const _hoisted_1$m = ["disabled", "data-type"];
const _hoisted_2$k = ["disabled", "readonly", "placeholder", "maxlength", "name", "autofocus", "rows"];
const _hoisted_3$h = ["disabled", "readonly", "type", "placeholder", "inputmode", "maxlength", "name", "autofocus"];
const _sfc_main$s = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-field"
  },
  __name: "field",
  props: FieldProps,
  emits: ["update:modelValue", "prepend-click", "prefix-click", "append-click", "suffix-click", "focus", "blur", "input", "clear", "keydown", "keyup"],
  setup(__props, { emit: __emit }) {
    const props = __props;
    const emits = __emit;
    const focus = ref(false);
    const textareaRef = ref(null);
    const inputRef = ref(null);
    const parseIcon = computed(() => {
      return (params) => {
        let icon2 = {
          spin: false,
          type: "",
          url: "",
          color: "",
          size: ""
        };
        if (obj.common.isObject(params)) {
          if (typeof params.spin == "boolean") {
            icon2.spin = params.spin;
          }
          if (typeof params.type == "string") {
            icon2.type = params.type;
          }
          if (typeof params.url == "string") {
            icon2.url = params.url;
          }
          if (typeof params.color == "string") {
            icon2.color = params.color;
          }
          if (typeof params.size == "string") {
            icon2.size = params.size;
          }
        } else if (typeof params == "string") {
          icon2.type = params;
        }
        return icon2;
      };
    });
    const realValue = computed({
      set(value) {
        if (props.modelValue !== value) {
          emits("update:modelValue", value);
        }
      },
      get() {
        let value = props.modelValue === null ? "" : props.modelValue.toString();
        if (props.type == "number") {
          value = value.replace(/\D/g, "");
        }
        if (props.maxlength > 0 && value.length > props.maxlength) {
          value = value.substring(0, props.maxlength);
        }
        if (props.modelValue !== value) {
          emits("update:modelValue", value);
        }
        return value;
      }
    });
    const showClear = computed(() => {
      if (props.disabled || props.readonly) {
        return false;
      }
      if (realValue.value && focus.value) {
        return true;
      }
      return false;
    });
    const showPrefix = computed(() => {
      if (props.type == "textarea") {
        return false;
      }
      return !!(parseIcon.value(props.prefix).type || parseIcon.value(props.prefix).url || useSlots().prefix);
    });
    const showSuffix = computed(() => {
      if (props.type == "textarea") {
        return false;
      }
      return !!(parseIcon.value(props.suffix).type || parseIcon.value(props.suffix).url || useSlots().suffix);
    });
    const showPrepend = computed(() => {
      if (props.type == "textarea") {
        return false;
      }
      return !!(parseIcon.value(props.prepend).type || parseIcon.value(props.prepend).url || useSlots().prepend);
    });
    const showAppend = computed(() => {
      if (props.type == "textarea") {
        return false;
      }
      return !!(parseIcon.value(props.append).type || parseIcon.value(props.append).url || useSlots().append);
    });
    const clearStyle = computed(() => {
      return {
        borderRadius: showSuffix.value ? 0 : "",
        paddingRight: showSuffix.value ? 0 : ""
      };
    });
    const inputStyle = computed(() => {
      return {
        paddingLeft: showPrefix.value ? 0 : "",
        paddingRight: showSuffix.value || showClear.value && props.clearable ? 0 : "",
        textAlign: props.align ? props.align : ""
      };
    });
    const fieldBodyStyle = computed(() => {
      let style = {};
      if (focus.value && props.activeColor) {
        style.borderColor = props.activeColor;
        const rgb = obj.color.hex2rgb(props.activeColor);
        style.boxShadow = `0 0 0.16rem rgba(${rgb[0]},${rgb[1]},${rgb[2]},0.5)`;
      }
      return style;
    });
    const fieldBodyClass = computed(() => {
      let cls = [];
      if (showPrepend.value) {
        cls.push("left-none-radius");
      }
      if (showAppend.value) {
        cls.push("right-none-radius");
      }
      if (!props.activeColor && props.activeType && focus.value) {
        cls.push(props.activeType);
      }
      return cls;
    });
    const fieldClass = computed(() => {
      let cls = [props.size];
      if (props.type == "textarea") {
        return cls;
      }
      if (props.round) {
        cls.push("round");
      } else if (props.square) {
        cls.push("square");
      }
      return cls;
    });
    const cmpType = computed(() => {
      if (props.type == "number") {
        return "text";
      }
      return props.type;
    });
    const rowsFilter = computed(() => {
      let rows = props.rows;
      if (obj.common.isObject(props.autosize)) {
        if (obj.number.isNumber(props.autosize.minRows)) {
          if (props.rows < props.autosize.minRows) {
            rows = props.autosize.minRows;
          }
        }
        if (obj.number.isNumber(props.autosize.maxRows)) {
          if (props.rows > props.autosize.maxRows) {
            rows = props.autosize.maxRows;
          }
        }
      }
      return rows;
    });
    const autosizeSet = () => {
      textareaRef.value.style.overflow = "hidden";
      textareaRef.value.style.height = "auto";
      textareaRef.value.scrollTop = 0;
      textareaRef.value.style.height = obj.element.getScrollHeight(textareaRef.value) + "px";
    };
    const rows2Height = (rows) => {
      let lineHeight = Math.floor(parseFloat(obj.element.getCssStyle(textareaRef.value, "line-height")));
      return rows * lineHeight;
    };
    const setMaxMinHeight = () => {
      if (obj.common.isObject(props.autosize)) {
        if (obj.number.isNumber(props.autosize.maxRows)) {
          let maxHeight = rows2Height(props.autosize.maxRows) + parseFloat(obj.element.getCssStyle(textareaRef.value, "padding-top")) + parseFloat(obj.element.getCssStyle(textareaRef.value, "padding-bottom"));
          textareaRef.value.style.maxHeight = maxHeight + "px";
        }
        if (obj.number.isNumber(props.autosize.minRows)) {
          let minHeight = rows2Height(props.autosize.minRows) + parseFloat(obj.element.getCssStyle(textareaRef.value, "padding-top")) + parseFloat(obj.element.getCssStyle(textareaRef.value, "padding-bottom"));
          textareaRef.value.style.minHeight = minHeight + "px";
        }
      } else {
        textareaRef.value.style.maxHeight = "";
        textareaRef.value.style.minHeight = "";
      }
    };
    const keydown = (e) => {
      if (props.disabled) {
        return;
      }
      emits("keydown", e, realValue.value);
    };
    const keyup = (e) => {
      if (props.disabled) {
        return;
      }
      emits("keyup", e, realValue.value);
    };
    const inputFocus = () => {
      if (props.disabled) {
        return;
      }
      focus.value = true;
      emits("focus", realValue.value);
    };
    const inputBlur = () => {
      if (props.disabled) {
        return;
      }
      setTimeout(() => {
        focus.value = false;
        emits("blur", realValue.value);
      }, 200);
    };
    const input2 = () => {
      if (props.disabled) {
        return;
      }
      emits("input", realValue.value);
    };
    const prependClick = () => {
      if (props.disabled) {
        return;
      }
      emits("prepend-click", realValue.value);
    };
    const prefixClick = () => {
      if (props.disabled) {
        return;
      }
      emits("prefix-click", realValue.value);
    };
    const appendClick = () => {
      if (props.disabled) {
        return;
      }
      emits("append-click", realValue.value);
    };
    const suffixClick = () => {
      if (props.disabled) {
        return;
      }
      emits("suffix-click", realValue.value);
    };
    const doClear = () => {
      if (props.disabled) {
        return;
      }
      if (!props.clearable) {
        return;
      }
      setTimeout(() => {
        realValue.value = "";
        let el = inputRef.value || textareaRef.value;
        el.focus();
        emits("clear", realValue.value);
      }, 210);
    };
    watch(
      () => realValue.value,
      () => {
        nextTick(() => {
          if (textareaRef.value && (props.autosize === true || obj.common.isObject(props.autosize))) {
            autosizeSet();
          }
        });
      }
    );
    watch(
      () => [props.rows, props.autosize],
      () => {
        nextTick(() => {
          if (textareaRef.value) {
            setMaxMinHeight();
          }
        });
      }
    );
    onMounted(() => {
      if (textareaRef.value) {
        setMaxMinHeight();
        if (props.autosize === true || obj.common.isObject(props.autosize)) {
          autosizeSet();
        }
      }
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["mvi-field", fieldClass.value]),
        disabled: _ctx.disabled || null,
        "data-type": _ctx.type
      }, [
        showPrepend.value ? (openBlock(), createElementBlock("div", {
          key: 0,
          class: "mvi-field-prepend",
          onClick: prependClick
        }, [
          _ctx.$slots.prepend ? renderSlot(_ctx.$slots, "prepend", { key: 0 }, void 0, true) : (openBlock(), createBlock(unref(Icon), {
            key: 1,
            type: parseIcon.value(_ctx.prepend).type,
            url: parseIcon.value(_ctx.prepend).url,
            spin: parseIcon.value(_ctx.prepend).spin,
            size: parseIcon.value(_ctx.prepend).size,
            color: parseIcon.value(_ctx.prepend).color
          }, null, 8, ["type", "url", "spin", "size", "color"]))
        ])) : createCommentVNode("", true),
        createElementVNode("div", {
          class: normalizeClass(["mvi-field-body", fieldBodyClass.value]),
          style: normalizeStyle(fieldBodyStyle.value)
        }, [
          showPrefix.value ? (openBlock(), createElementBlock("div", {
            key: 0,
            class: "mvi-field-prefix",
            onClick: prefixClick
          }, [
            _ctx.$slots.prefix ? renderSlot(_ctx.$slots, "prefix", { key: 0 }, void 0, true) : (openBlock(), createBlock(unref(Icon), {
              key: 1,
              type: parseIcon.value(_ctx.prefix).type,
              url: parseIcon.value(_ctx.prefix).url,
              spin: parseIcon.value(_ctx.prefix).spin,
              size: parseIcon.value(_ctx.prefix).size,
              color: parseIcon.value(_ctx.prefix).color
            }, null, 8, ["type", "url", "spin", "size", "color"]))
          ])) : createCommentVNode("", true),
          _ctx.type == "textarea" ? withDirectives((openBlock(), createElementBlock("textarea", {
            key: 1,
            ref_key: "textareaRef",
            ref: textareaRef,
            disabled: _ctx.disabled,
            readonly: _ctx.readonly,
            class: "mvi-field-input",
            style: normalizeStyle(inputStyle.value),
            placeholder: _ctx.placeholder,
            "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => realValue.value = $event),
            autocomplete: "off",
            onFocus: inputFocus,
            onBlur: inputBlur,
            maxlength: _ctx.maxlength,
            name: _ctx.name,
            autofocus: _ctx.autofocus,
            rows: rowsFilter.value,
            onInput: input2,
            onKeydown: keydown,
            onKeyup: keyup
          }, null, 44, _hoisted_2$k)), [
            [vModelText, realValue.value]
          ]) : withDirectives((openBlock(), createElementBlock("input", {
            key: 2,
            ref_key: "inputRef",
            ref: inputRef,
            disabled: _ctx.disabled,
            readonly: _ctx.readonly,
            class: normalizeClass(["mvi-field-input", showPrefix.value ? "left-none-radius" : "", showSuffix.value || _ctx.clearable && showClear.value ? "right-none-radius" : ""]),
            style: normalizeStyle(inputStyle.value),
            type: cmpType.value,
            placeholder: _ctx.placeholder,
            "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => realValue.value = $event),
            autocomplete: "off",
            inputmode: _ctx.inputMode,
            onFocus: inputFocus,
            onBlur: inputBlur,
            maxlength: _ctx.maxlength,
            name: _ctx.name,
            autofocus: _ctx.autofocus,
            onInput: input2,
            onKeydown: keydown,
            onKeyup: keyup
          }, null, 46, _hoisted_3$h)), [
            [vModelDynamic, realValue.value]
          ]),
          _ctx.clearable && _ctx.type != "textarea" ? withDirectives((openBlock(), createElementBlock("div", {
            key: 3,
            class: "mvi-field-clear",
            style: normalizeStyle(clearStyle.value),
            onClick: doClear
          }, [
            createVNode(unref(Icon), { type: "times-o" })
          ], 4)), [
            [vShow, showClear.value]
          ]) : createCommentVNode("", true),
          showSuffix.value ? (openBlock(), createElementBlock("div", {
            key: 4,
            class: "mvi-field-suffix",
            onClick: suffixClick
          }, [
            _ctx.$slots.suffix ? renderSlot(_ctx.$slots, "suffix", { key: 0 }, void 0, true) : (openBlock(), createBlock(unref(Icon), {
              key: 1,
              type: parseIcon.value(props.suffix).type,
              url: parseIcon.value(props.suffix).url,
              spin: parseIcon.value(props.suffix).spin,
              size: parseIcon.value(props.suffix).size,
              color: parseIcon.value(props.suffix).color
            }, null, 8, ["type", "url", "spin", "size", "color"]))
          ])) : createCommentVNode("", true)
        ], 6),
        showAppend.value ? (openBlock(), createElementBlock("div", {
          key: 1,
          class: "mvi-field-append",
          onClick: appendClick
        }, [
          _ctx.$slots.append ? renderSlot(_ctx.$slots, "append", { key: 0 }, void 0, true) : (openBlock(), createBlock(unref(Icon), {
            key: 1,
            type: parseIcon.value(_ctx.append).type,
            url: parseIcon.value(_ctx.append).url,
            spin: parseIcon.value(_ctx.append).spin,
            size: parseIcon.value(_ctx.append).size,
            color: parseIcon.value(_ctx.append).color
          }, null, 8, ["type", "url", "spin", "size", "color"]))
        ])) : createCommentVNode("", true)
      ], 10, _hoisted_1$m);
    };
  }
});
const field = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["__scopeId", "data-v-8b3058e7"]]);
const Field = withInstall(field);
const FormProps = {
  //竖排显示时整个表单宽度
  width: {
    type: String,
    default: null
  },
  //是否竖排显示
  block: {
    type: Boolean,
    default: false
  },
  //同form-el的align
  align: {
    type: String,
    default: "center"
  },
  //竖排显示时标签是否独立一行
  labelBlock: {
    type: Boolean,
    default: false
  },
  //标签宽度
  labelWidth: {
    type: String,
    default: null
  },
  //标签距离右侧距离
  labelOffset: {
    type: String,
    default: null
  }
};
const _sfc_main$r = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-form"
  },
  __name: "form",
  props: FormProps,
  setup(__props) {
    const instance = getCurrentInstance();
    componentIsMatch(instance, "m-form-el", ["Form", "FormEl"]);
    provide("form", instance);
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["mvi-form", { block: _ctx.block }]),
        style: normalizeStyle({ width: _ctx.block && _ctx.width ? _ctx.width : "" })
      }, [
        renderSlot(_ctx.$slots, "default", {}, void 0, true)
      ], 6);
    };
  }
});
const form = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["__scopeId", "data-v-ba6896c8"]]);
const Form = withInstall(form);
const FormElProps = {
  //垂直对齐方式
  align: {
    type: String,
    default: null
  },
  //宽度
  width: {
    type: String,
    default: null
  },
  //标签内容
  label: {
    type: String,
    default: ""
  },
  //标签宽度
  labelWidth: {
    type: String,
    default: null
  },
  //标签距离右侧距离
  labelOffset: {
    type: String,
    default: null
  }
};
const _hoisted_1$l = ["textContent"];
const _hoisted_2$j = {
  key: 1,
  class: "mvi-form-container"
};
const _sfc_main$q = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-form-el"
  },
  __name: "form-el",
  props: FormElProps,
  setup(__props) {
    const form2 = inject("form", null);
    parentIsMatch(ref([]), form2, "m-form", ["Form", "FormEl"]);
    const props = __props;
    const labelStyle = computed(() => {
      let style = {};
      if (!form2.props.labelBlock) {
        if (props.labelWidth) {
          style.width = props.labelWidth;
        } else if (form2.props.labelWidth) {
          style.width = form2.props.labelWidth;
        }
      }
      if (props.labelOffset) {
        if (form2.props.labelBlock) {
          style.marginBottom = props.labelOffset;
        } else {
          style.marginRight = props.labelOffset;
        }
      } else if (form2.props.labelOffset) {
        if (form2.props.labelBlock) {
          style.marginBottom = form2.props.labelOffset;
        } else {
          style.marginRight = form2.props.labelOffset;
        }
      }
      return style;
    });
    const formElStyle = computed(() => {
      let style = {};
      if (props.width) {
        style.width = props.width;
      }
      if (props.align) {
        style.alignItems = props.align;
      } else if (form2.props.align) {
        style.alignItems = form2.props.align;
      }
      return style;
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["mvi-form-el", { block: unref(form2).props.block }]),
        style: normalizeStyle(formElStyle.value)
      }, [
        _ctx.label ? (openBlock(), createElementBlock("div", {
          key: 0,
          class: normalizeClass(["mvi-form-label", { block: unref(form2).props.labelBlock && unref(form2).props.block }]),
          textContent: toDisplayString(_ctx.label),
          style: normalizeStyle(labelStyle.value)
        }, null, 14, _hoisted_1$l)) : createCommentVNode("", true),
        _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_2$j, [
          renderSlot(_ctx.$slots, "default", {}, void 0, true)
        ])) : createCommentVNode("", true)
      ], 6);
    };
  }
});
const formEl = /* @__PURE__ */ _export_sfc(_sfc_main$q, [["__scopeId", "data-v-c09bf8dd"]]);
const FormEl = withInstall(formEl);
const ImageProps = {
  //图片链接
  src: {
    type: String,
    default: ""
  },
  //填充类型
  fit: {
    type: String,
    default: "fill",
    validator(value) {
      return ["fill", "cover", "contain", "response", "none"].includes(value);
    }
  },
  //原生alt属性
  alt: {
    type: String,
    default: ""
  },
  //是否显示图片加载失败提示
  showError: {
    type: Boolean,
    default: true
  },
  //是否显示图片加载中提示
  showLoading: {
    type: Boolean,
    default: true
  },
  //是否启用延迟加载
  lazyLoad: {
    type: Boolean,
    default: false
  },
  //延时加载时指定的滚动容器选择器
  root: {
    type: String,
    default: null
  },
  //加载图标
  loadIcon: {
    type: [String, Object],
    default: "image-alt"
  },
  //失败图标
  errorIcon: {
    type: [String, Object],
    default: "image-error"
  },
  //是否圆形图片
  round: {
    type: Boolean,
    default: false
  },
  //图片宽度
  width: {
    type: String,
    default: null
  },
  //图片高度
  height: {
    type: String,
    default: null
  }
};
const _hoisted_1$k = {
  key: 0,
  class: "mvi-image-loading"
};
const _hoisted_2$i = ["src", "alt"];
const _sfc_main$p = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-image"
  },
  __name: "image",
  props: ImageProps,
  emits: ["success", "error"],
  setup(__props, { emit: __emit }) {
    const props = __props;
    const emits = __emit;
    const error = ref(false);
    const loading2 = ref(true);
    const lazySrc = ref("");
    const lazying = ref(false);
    const spy = ref(null);
    const elRef = ref(null);
    const parseIcon = computed(() => {
      return (params) => {
        let icon2 = {
          spin: false,
          type: "",
          url: "",
          color: "",
          size: ""
        };
        if (obj.common.isObject(params)) {
          if (typeof params.spin == "boolean") {
            icon2.spin = params.spin;
          }
          if (typeof params.type == "string") {
            icon2.type = params.type;
          }
          if (typeof params.url == "string") {
            icon2.url = params.url;
          }
          if (typeof params.color == "string") {
            icon2.color = params.color;
          }
          if (typeof params.size == "string") {
            icon2.size = params.size;
          }
        } else if (typeof params == "string") {
          icon2.type = params;
        }
        return icon2;
      };
    });
    const imageStyle = computed(() => {
      let style = {};
      if (props.round) {
        style.borderRadius = "50%";
      }
      if (props.width) {
        style.width = props.width;
      }
      if (props.height) {
        style.height = props.height;
      }
      return style;
    });
    const imgClass = computed(() => {
      if (props.fit == "contain") {
        return "mvi-image-contain";
      }
      if (props.fit == "cover") {
        return "mvi-image-cover";
      }
      if (props.fit == "none") {
        return "mvi-image-none";
      }
      if (props.fit == "response") {
        return "mvi-image-response";
      }
      return "mvi-image-fill";
    });
    const cmpSrc = computed(() => {
      if (props.lazyLoad) {
        return lazySrc.value;
      } else {
        return props.src;
      }
    });
    const lazyloadFun = () => {
      lazying.value = true;
      spy.value = new Spy$1(elRef.value, {
        el: props.root,
        //图片进入可视端口时加载
        beforeEnter: () => {
          lazying.value = false;
          lazySrc.value = props.src;
        }
      });
      spy.value.init();
    };
    const loadSuccess = (e) => {
      error.value = false;
      loading2.value = false;
      emits("success", e.target);
    };
    const loadError = (e) => {
      loading2.value = false;
      error.value = true;
      emits("error", e.target);
    };
    watch(
      () => cmpSrc.value,
      () => {
        loading2.value = true;
      }
    );
    onMounted(() => {
      if (props.lazyLoad) {
        lazyloadFun();
      }
    });
    onBeforeUnmount(() => {
      if (spy.value) {
        spy.value.destroy();
      }
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: "mvi-image",
        style: normalizeStyle(imageStyle.value),
        ref_key: "elRef",
        ref: elRef
      }, [
        (loading2.value || lazying.value) && _ctx.showLoading ? (openBlock(), createElementBlock("div", _hoisted_1$k, [
          _ctx.$slots.loading ? renderSlot(_ctx.$slots, "loading", { key: 0 }, void 0, true) : (openBlock(), createBlock(unref(Icon), {
            key: 1,
            type: parseIcon.value(_ctx.loadIcon).type,
            url: parseIcon.value(_ctx.loadIcon).url,
            spin: parseIcon.value(_ctx.loadIcon).spin,
            size: parseIcon.value(_ctx.loadIcon).size,
            color: parseIcon.value(_ctx.loadIcon).color
          }, null, 8, ["type", "url", "spin", "size", "color"]))
        ])) : error.value && _ctx.showError ? (openBlock(), createElementBlock("div", {
          key: 1,
          class: "mvi-image-error",
          ref_key: "error",
          ref: error
        }, [
          _ctx.$slots.error ? renderSlot(_ctx.$slots, "error", { key: 0 }, void 0, true) : (openBlock(), createBlock(unref(Icon), {
            key: 1,
            type: parseIcon.value(_ctx.errorIcon).type,
            url: parseIcon.value(_ctx.errorIcon).url,
            spin: parseIcon.value(_ctx.errorIcon).spin,
            size: parseIcon.value(_ctx.errorIcon).size,
            color: parseIcon.value(_ctx.errorIcon).color
          }, null, 8, ["type", "url", "spin", "size", "color"]))
        ], 512)) : createCommentVNode("", true),
        createElementVNode("img", {
          onLoad: loadSuccess,
          onError: loadError,
          src: cmpSrc.value,
          alt: _ctx.showError ? "" : _ctx.alt,
          class: normalizeClass(imgClass.value)
        }, null, 42, _hoisted_2$i)
      ], 4);
    };
  }
});
const image = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["__scopeId", "data-v-23fb9b11"]]);
const Image$1 = withInstall(image);
const ColorPickerProps = {
  //颜色值
  modelValue: {
    type: String,
    default: "#ff0000"
  },
  //是否显示透明度滑动条
  showAlpha: {
    type: Boolean,
    default: true
  }
};
const _withScopeId$1 = (n) => (pushScopeId("data-v-179d24ea"), n = n(), popScopeId(), n);
const _hoisted_1$j = { class: "mvi-color-picker" };
const _hoisted_2$h = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ createElementVNode("div", { class: "mvi-color-picker-slider" }, null, -1));
const _hoisted_3$g = {
  key: 0,
  class: "mvi-color-picker-alpha"
};
const _hoisted_4$b = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ createElementVNode("div", { class: "mvi-color-picker-slider" }, null, -1));
const _sfc_main$o = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-color-picker"
  },
  __name: "color-picker",
  props: ColorPickerProps,
  emits: ["update:modelValue", "change"],
  setup(__props, { emit: __emit }) {
    const props = __props;
    const emits = __emit;
    const hsv = ref([0, 0, 0]);
    const opacity = ref(1);
    const updateByDrag = ref(false);
    const dragging = ref(false);
    const heightObj = ref(null);
    const dragObj = ref(null);
    const panelRef = ref(null);
    const sliderRef = ref(null);
    const panelStyle = computed(() => {
      const rgbValue = obj.color.hsv2rgb([hsv.value[0], 100, 100]);
      return {
        background: `rgb(${rgbValue[0]},${rgbValue[1]},${rgbValue[2]})`
      };
    });
    const alphaTrackColor = computed(() => {
      const rgbValue = obj.color.hsv2rgb(hsv.value);
      return `linear-gradient(to right, transparent 0%, rgb(${rgbValue[0]}, ${rgbValue[1]}, ${rgbValue[2]}) 100%)`;
    });
    const initHSV = () => {
      if (updateByDrag.value) {
        return;
      }
      if (props.modelValue && obj.common.matchingText(props.modelValue, "hex")) {
        const rgbValue = obj.color.hex2rgb(props.modelValue);
        hsv.value = obj.color.rgb2hsv(rgbValue);
        opacity.value = 1;
      } else {
        try {
          const first = props.modelValue.indexOf("(");
          const last = props.modelValue.lastIndexOf(")");
          const arry = props.modelValue.substring(first + 1, last).split(",");
          if (arry.length < 3) {
            throw new Error("Color values are not RGB (RGBA) format and hexadecimal format");
          }
          const rgbValue = [Number(arry[0]), Number(arry[1]), Number(arry[2])];
          hsv.value = obj.color.rgb2hsv(rgbValue);
          opacity.value = arry.length == 4 ? Number(arry[3]) : 1;
        } catch (e) {
          throw new Error("Color values are not RGB (RGBA) format and hexadecimal format");
        }
      }
    };
    const setPanelHeight = () => {
      if (heightObj.value) {
        return;
      }
      heightObj.value = new Prop$1(panelRef.value, 0.7);
      heightObj.value.init();
    };
    const setPanelDrag = () => {
      if (dragObj.value) {
        return;
      }
      dragObj.value = new Drag$1(sliderRef.value, {
        container: panelRef.value,
        mode: "on",
        draggableX: true,
        draggableY: true,
        cursor: false,
        beforeDrag: () => {
          updateByDrag.value = true;
          dragging.value = true;
        },
        drag: () => {
          const placement = obj.element.getElementPoint(sliderRef.value, panelRef.value);
          hsv.value[1] = (placement.left + sliderRef.value.offsetWidth / 2) / panelRef.value.offsetWidth * 100;
          hsv.value[2] = (1 - (placement.top + sliderRef.value.offsetHeight / 2) / panelRef.value.offsetHeight) * 100;
          setValue();
        },
        dragged: () => {
          updateByDrag.value = false;
          nextTick(() => {
            setTimeout(() => {
              dragging.value = false;
            }, 10);
          });
        }
      });
      dragObj.value.init();
    };
    const setSliderPlacement = () => {
      sliderRef.value.style.left = hsv.value[1] / 100 * panelRef.value.offsetWidth - sliderRef.value.offsetWidth / 2 + "px";
      sliderRef.value.style.top = (1 - hsv.value[2] / 100) * panelRef.value.offsetHeight - sliderRef.value.offsetHeight / 2 + "px";
    };
    const setValue = () => {
      const rgbValue = obj.color.hsv2rgb(hsv.value);
      if (opacity.value == 1) {
        const val = `rgb(${rgbValue[0]},${rgbValue[1]},${rgbValue[2]})`;
        emits("update:modelValue", val);
        emits("change", val);
      } else {
        const val = `rgba(${rgbValue[0]},${rgbValue[1]},${rgbValue[2]},${Number(opacity.value.toFixed(2))})`;
        emits("update:modelValue", val);
        emits("change", val);
      }
    };
    const clickPanelSetColor = (e) => {
      if (dragging.value) {
        return;
      }
      updateByDrag.value = true;
      sliderRef.value.style.left = e.offsetX - sliderRef.value.offsetWidth / 2 + "px";
      sliderRef.value.style.top = e.offsetY - sliderRef.value.offsetHeight / 2 + "px";
      const placement = obj.element.getElementPoint(sliderRef.value, panelRef.value);
      hsv.value[1] = (placement.left + sliderRef.value.offsetWidth / 2) / panelRef.value.offsetWidth * 100;
      hsv.value[2] = (1 - (placement.top + sliderRef.value.offsetHeight / 2) / panelRef.value.offsetHeight) * 100;
      setValue();
    };
    watch(
      () => props.modelValue,
      () => {
        initHSV();
        setSliderPlacement();
      }
    );
    initHSV();
    onMounted(() => {
      setPanelHeight();
      setPanelDrag();
      setSliderPlacement();
    });
    onBeforeUnmount(() => {
      if (dragObj.value) {
        dragObj.value.destroy();
      }
      if (heightObj.value) {
        heightObj.value.destroy();
      }
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", _hoisted_1$j, [
        createElementVNode("div", {
          class: "mvi-color-picker-panel",
          ref_key: "panelRef",
          ref: panelRef,
          style: normalizeStyle(panelStyle.value),
          onClick: clickPanelSetColor
        }, [
          createElementVNode("div", {
            class: "mvi-color-picker-panel-slider",
            ref_key: "sliderRef",
            ref: sliderRef
          }, null, 512)
        ], 4),
        createVNode(unref(Slider), {
          modelValue: hsv.value[0],
          "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => hsv.value[0] = $event),
          min: 0,
          max: 360,
          "stroke-width": "0.3rem",
          square: "",
          "track-color": "linear-gradient(to right, #f00 0%, #ff0 16.66%, #0f0 33.33%, #0ff 50%, #00f 66.66%, #f0f 83.33%, #f00 100%)",
          color: "transparent",
          onChange: setValue
        }, {
          button: withCtx(() => [
            _hoisted_2$h
          ]),
          _: 1
        }, 8, ["modelValue"]),
        _ctx.showAlpha ? (openBlock(), createElementBlock("div", _hoisted_3$g, [
          createVNode(unref(Slider), {
            modelValue: opacity.value,
            "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => opacity.value = $event),
            min: 0,
            max: 1,
            "stroke-width": "0.3rem",
            square: "",
            "track-color": alphaTrackColor.value,
            color: "transparent",
            onChange: setValue
          }, {
            button: withCtx(() => [
              _hoisted_4$b
            ]),
            _: 1
          }, 8, ["modelValue", "track-color"])
        ])) : createCommentVNode("", true)
      ]);
    };
  }
});
const colorPicker = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["__scopeId", "data-v-179d24ea"]]);
const ColorPicker = withInstall(colorPicker);
const ListProps = {
  //是否加载状态
  loading: {
    type: Boolean,
    default: false
  },
  //是否错误状态
  error: {
    type: Boolean,
    default: false
  },
  //是否完成状态
  finished: {
    type: Boolean,
    default: false
  },
  //加载文案
  loadingText: {
    type: String,
    default: "正在加载"
  },
  //错误文案
  errorText: {
    type: String,
    default: "数据加载失败"
  },
  //完成文案
  finishedText: {
    type: String,
    default: "没有更多了"
  },
  //初始化是否触发一次load
  immediateLoad: {
    type: Boolean,
    default: false
  },
  //content内容
  content: {
    type: String,
    default: "点我加载更多"
  },
  //滚动元素
  scrollEl: {
    type: String,
    default: null
  }
};
const _hoisted_1$i = { class: "mvi-list" };
const _hoisted_2$g = {
  key: 0,
  class: "mvi-list-finished"
};
const _hoisted_3$f = { key: 1 };
const _hoisted_4$a = {
  key: 1,
  class: "mvi-list-loading"
};
const _hoisted_5$6 = { key: 1 };
const _hoisted_6$6 = { key: 1 };
const _hoisted_7$5 = { key: 1 };
const _sfc_main$n = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-list"
  },
  __name: "list",
  props: ListProps,
  emits: ["load", "update:loading", "update:error"],
  setup(__props, { emit: __emit }) {
    const props = __props;
    const emits = __emit;
    const scrollObj = ref(null);
    const doLoad = () => {
      if (props.finished) {
        return;
      }
      emits("update:loading", true);
      emits("update:error", false);
      emits("load");
    };
    const initScroll = () => {
      const el = document.body.querySelector(props.scrollEl);
      if (!el) {
        return;
      }
      if (scrollObj.value) {
        return;
      }
      scrollObj.value = new Scroll$1(el, {
        bottom: () => {
          if (props.finished || props.loading || props.error) {
            return;
          }
          doLoad();
        }
      });
      scrollObj.value.init();
    };
    onMounted(() => {
      initScroll();
      if (props.immediateLoad) {
        doLoad();
      }
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", _hoisted_1$i, [
        renderSlot(_ctx.$slots, "default", {}, void 0, true),
        _ctx.finished ? (openBlock(), createElementBlock("div", _hoisted_2$g, [
          _ctx.$slots.finished ? renderSlot(_ctx.$slots, "finished", { key: 0 }, void 0, true) : (openBlock(), createElementBlock("span", _hoisted_3$f, toDisplayString(_ctx.finishedText), 1))
        ])) : _ctx.loading ? (openBlock(), createElementBlock("div", _hoisted_4$a, [
          _ctx.$slots.loading ? renderSlot(_ctx.$slots, "loading", { key: 0 }, void 0, true) : (openBlock(), createElementBlock("span", _hoisted_5$6, toDisplayString(_ctx.loadingText), 1))
        ])) : _ctx.error ? (openBlock(), createElementBlock("div", {
          key: 2,
          onClick: doLoad,
          class: "mvi-list-error"
        }, [
          _ctx.$slots.error ? renderSlot(_ctx.$slots, "error", { key: 0 }, void 0, true) : (openBlock(), createElementBlock("span", _hoisted_6$6, toDisplayString(_ctx.errorText), 1))
        ])) : _ctx.content || _ctx.$slots.content ? (openBlock(), createElementBlock("div", {
          key: 3,
          onClick: doLoad,
          class: "mvi-list-content"
        }, [
          _ctx.$slots.content ? renderSlot(_ctx.$slots, "content", { key: 0 }, void 0, true) : (openBlock(), createElementBlock("span", _hoisted_7$5, toDisplayString(_ctx.content), 1))
        ])) : createCommentVNode("", true)
      ]);
    };
  }
});
const list = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["__scopeId", "data-v-66cbb05b"]]);
const List = withInstall(list);
const ModalProps = {
  //是否显示
  modelValue: {
    type: Boolean,
    default: false
  },
  //挂载元素
  mountEl: {
    type: String,
    default: null
  },
  //模态框标题
  title: {
    type: String,
    default: ""
  },
  //标题是否居中
  center: {
    type: Boolean,
    default: false
  },
  //标题是否只一行，超出省略
  ellipsis: {
    type: Boolean,
    default: false
  },
  //模态框内容
  content: {
    type: String,
    default: ""
  },
  //尾注信息
  footer: {
    type: String,
    default: null
  },
  //是否显示关闭图标
  showTimes: {
    type: Boolean,
    default: false
  },
  //动画时间
  timeout: {
    type: Number,
    default: 200
  },
  //点击背景遮罩是否关闭
  closable: {
    type: Boolean,
    default: false
  },
  //遮罩层颜色
  overlayColor: {
    type: String,
    default: null
  },
  //遮罩层z-index
  zIndex: {
    type: Number,
    default: 900
  },
  //弹窗显示的宽度
  width: {
    type: String,
    default: null
  },
  //模态框圆角
  radius: {
    type: String,
    default: null
  },
  //动画
  animation: {
    type: String,
    //'narrow','scale','translate-top','translate-bottom','translate-left','translate-right'
    default: "scale"
  },
  //局部显示是否考虑PC端滚动条影响
  usePadding: {
    type: Boolean,
    default: false
  },
  //是否全屏
  fullScreen: {
    type: Boolean,
    default: false
  },
  //模态框作为dialog时的属性，不设置footer的内边距，仅供内部使用
  __ignorePadding: {
    type: Boolean,
    default: false
  }
};
const _hoisted_1$h = ["innerHTML"];
const _hoisted_2$f = ["innerHTML"];
const _hoisted_3$e = ["textContent"];
const _sfc_main$m = /* @__PURE__ */ defineComponent({
  ...{
    inheritAttrs: false,
    name: "m-modal"
  },
  __name: "modal",
  props: ModalProps,
  emits: ["update:modelValue", "show", "showing", "shown", "hide", "hidding", "hidden"],
  setup(__props, { expose: __expose, emit: __emit }) {
    const instance = getCurrentInstance();
    const props = __props;
    const emits = __emit;
    const modalShow = ref(false);
    const firstShow = ref(false);
    const overlayRef = ref(null);
    const modalRef = ref(null);
    const wrapperRef = ref(null);
    const headerRef = ref(null);
    const contentRef = ref(null);
    const footerRef = ref(null);
    const $$el = computed(() => {
      return overlayRef.value ? overlayRef.value.$$el : null;
    });
    const show = computed({
      get() {
        return props.modelValue;
      },
      set(value) {
        emits("update:modelValue", value);
      }
    });
    const wrapperStyle = computed(() => {
      let style = {};
      if (props.radius) {
        style.borderRadius = props.radius;
      }
      style.transition = "all " + props.timeout + "ms";
      return style;
    });
    const headerStyle = computed(() => {
      let style = {};
      if (useSlots().default || props.content) {
        style.paddingBottom = "0";
      }
      return style;
    });
    const modalSize = () => {
      if (props.fullScreen) {
        modalRef.value.style.width = $$el.value.offsetParent.offsetWidth + "px";
        wrapperRef.value.style.height = $$el.value.offsetParent.offsetHeight + "px";
        wrapperRef.value.style.maxHeight = "";
      } else {
        if (props.width) {
          modalRef.value.style.width = props.width;
        } else {
          modalRef.value.style.width = "";
        }
        wrapperRef.value.style.maxHeight = $$el.value.offsetParent.offsetHeight * 0.96 + "px";
        wrapperRef.value.style.height = "";
      }
    };
    const overlayShow = () => {
      if (!firstShow.value) {
        firstShow.value = true;
      }
      modalShow.value = true;
    };
    const overlayHide = () => {
      modalShow.value = false;
    };
    const beforeEnter = (el) => {
      if (obj.data.get(el, "mvi-modal-beforeEnter-trigger")) {
        return;
      }
      obj.data.set(el, "mvi-modal-beforeEnter-trigger", true);
      emits("show", el);
      if (typeof instance.appContext.config.globalProperties.modalComponentWatch == "function") {
        instance.appContext.config.globalProperties.modalComponentWatch.apply(instance.proxy, ["show", el]);
      }
    };
    const enter = (el) => {
      if (obj.data.get(el, "mvi-modal-enter-trigger")) {
        return;
      }
      obj.data.set(el, "mvi-modal-enter-trigger", true);
      modalSize();
      emits("showing", el);
      if (typeof instance.appContext.config.globalProperties.modalComponentWatch == "function") {
        instance.appContext.config.globalProperties.modalComponentWatch.apply(instance.proxy, ["showing", el]);
      }
    };
    const afterEnter = (el) => {
      emits("shown", el);
      if (typeof instance.appContext.config.globalProperties.modalComponentWatch == "function") {
        instance.appContext.config.globalProperties.modalComponentWatch.apply(instance.proxy, ["shown", el]);
      }
    };
    const beforeLeave = (el) => {
      obj.data.remove(el, "mvi-modal-beforeEnter-trigger");
      obj.data.remove(el, "mvi-modal-enter-trigger");
      emits("hide", el);
      if (typeof instance.appContext.config.globalProperties.modalComponentWatch == "function") {
        instance.appContext.config.globalProperties.modalComponentWatch.apply(instance.proxy, ["hide", el]);
      }
    };
    const leave = (el) => {
      emits("hidding", el);
      if (typeof instance.appContext.config.globalProperties.modalComponentWatch == "function") {
        instance.appContext.config.globalProperties.modalComponentWatch.apply(instance.proxy, ["hidding", el]);
      }
    };
    const afterLeave = (el) => {
      emits("hidden", el);
      if (typeof instance.appContext.config.globalProperties.modalComponentWatch == "function") {
        instance.appContext.config.globalProperties.modalComponentWatch.apply(instance.proxy, ["hidden", el]);
      }
    };
    watch(
      () => props.fullScreen,
      () => {
        modalSize();
      }
    );
    __expose({
      $$el
    });
    return (_ctx, _cache) => {
      return openBlock(), createBlock(unref(Overlay), {
        ref_key: "overlayRef",
        ref: overlayRef,
        modelValue: show.value,
        "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => show.value = $event),
        onShow: overlayShow,
        onHide: overlayHide,
        "use-padding": _ctx.usePadding,
        "z-index": _ctx.zIndex,
        closable: _ctx.closable,
        color: _ctx.overlayColor,
        timeout: _ctx.timeout,
        "mount-el": _ctx.mountEl
      }, {
        default: withCtx(() => [
          createElementVNode("div", {
            ref_key: "modalRef",
            ref: modalRef,
            class: "mvi-modal",
            style: normalizeStyle({ zIndex: _ctx.zIndex + 10 })
          }, [
            createVNode(Transition, {
              name: "mvi-modal-" + _ctx.animation,
              onBeforeEnter: beforeEnter,
              onEnter: enter,
              onAfterEnter: afterEnter,
              onBeforeLeave: beforeLeave,
              onLeave: leave,
              onAfterLeave: afterLeave
            }, {
              default: withCtx(() => [
                firstShow.value ? withDirectives((openBlock(), createElementBlock("div", mergeProps({
                  key: 0,
                  class: "mvi-modal-wrapper",
                  ref_key: "wrapperRef",
                  ref: wrapperRef,
                  style: wrapperStyle.value
                }, _ctx.$attrs), [
                  _ctx.showTimes ? (openBlock(), createElementBlock("div", {
                    key: 0,
                    class: "mvi-modal-times",
                    onClick: _cache[0] || (_cache[0] = ($event) => show.value = false)
                  }, [
                    createVNode(unref(Icon), { type: "times" })
                  ])) : createCommentVNode("", true),
                  _ctx.$slots.title || _ctx.title ? (openBlock(), createElementBlock("div", {
                    key: 1,
                    ref_key: "headerRef",
                    ref: headerRef,
                    class: normalizeClass(["mvi-modal-title", { ellipsis: _ctx.ellipsis, center: _ctx.center }]),
                    style: normalizeStyle(headerStyle.value)
                  }, [
                    _ctx.$slots.title ? renderSlot(_ctx.$slots, "title", { key: 0 }, void 0, true) : _ctx.title ? (openBlock(), createElementBlock("span", {
                      key: 1,
                      innerHTML: _ctx.title
                    }, null, 8, _hoisted_1$h)) : createCommentVNode("", true)
                  ], 6)) : createCommentVNode("", true),
                  _ctx.$slots.default || _ctx.content ? (openBlock(), createElementBlock("div", {
                    key: 2,
                    ref_key: "contentRef",
                    ref: contentRef,
                    class: "mvi-modal-content"
                  }, [
                    _ctx.$slots.default ? renderSlot(_ctx.$slots, "default", { key: 0 }, void 0, true) : _ctx.content ? (openBlock(), createElementBlock("span", {
                      key: 1,
                      innerHTML: _ctx.content
                    }, null, 8, _hoisted_2$f)) : createCommentVNode("", true)
                  ], 512)) : createCommentVNode("", true),
                  _ctx.$slots.footer || _ctx.footer ? (openBlock(), createElementBlock("div", {
                    key: 3,
                    ref_key: "footerRef",
                    ref: footerRef,
                    class: "mvi-modal-footer",
                    style: normalizeStyle({ padding: _ctx.__ignorePadding ? 0 : "" })
                  }, [
                    _ctx.$slots.footer ? renderSlot(_ctx.$slots, "footer", { key: 0 }, void 0, true) : _ctx.footer ? (openBlock(), createElementBlock("span", {
                      key: 1,
                      textContent: toDisplayString(_ctx.footer)
                    }, null, 8, _hoisted_3$e)) : createCommentVNode("", true)
                  ], 4)) : createCommentVNode("", true)
                ], 16)), [
                  [vShow, modalShow.value]
                ]) : createCommentVNode("", true)
              ]),
              _: 3
            }, 8, ["name"])
          ], 4)
        ]),
        _: 3
      }, 8, ["modelValue", "use-padding", "z-index", "closable", "color", "timeout", "mount-el"]);
    };
  }
});
const modal = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["__scopeId", "data-v-b601e19c"]]);
const Modal = withInstall(modal);
const PageProps = {
  //当前页
  modelValue: {
    type: Number,
    default: 1
  },
  //总页数
  total: {
    type: Number,
    default: 1
  },
  //显示的页码数
  overNumber: {
    type: Number,
    default: 3,
    validator(value) {
      return value % 2 != 0;
    }
  },
  //上一页显示文字
  prevText: {
    type: String,
    default: null
  },
  //下一页显示文字
  nextText: {
    type: String,
    default: null
  },
  //上一页显示的图标
  prevIcon: {
    type: [String, Object],
    default: "angle-left"
  },
  //下一页显示的图标
  nextIcon: {
    type: [String, Object],
    default: "angle-right"
  },
  //简单模式
  simple: {
    type: Boolean,
    default: false
  },
  //首页显示的文字
  firstText: {
    type: String,
    default: null
  },
  //尾页显示的文字
  lastText: {
    type: String,
    default: null
  },
  //首页显示的图标
  firstIcon: {
    type: [Object, String],
    default: "angle-double-left"
  },
  //尾页显示的图标
  lastIcon: {
    type: [Object, String],
    default: "angle-double-right"
  },
  //自定义字体颜色及选中的背景色
  color: {
    type: String,
    default: null
  },
  //是否显示点击态
  active: {
    type: Boolean,
    default: true
  }
};
const _hoisted_1$g = ["disabled"];
const _hoisted_2$e = ["textContent"];
const _hoisted_3$d = ["disabled"];
const _hoisted_4$9 = ["textContent"];
const _hoisted_5$5 = { class: "mvi-page-numbers" };
const _hoisted_6$5 = {
  key: 0,
  class: "mvi-page-numbers-simple"
};
const _hoisted_7$4 = {
  key: 1,
  class: "mvi-page-numbers-items"
};
const _hoisted_8$3 = ["textContent", "onClick"];
const _hoisted_9$2 = ["textContent", "onClick"];
const _hoisted_10 = ["disabled"];
const _hoisted_11 = ["textContent"];
const _hoisted_12 = ["disabled"];
const _hoisted_13 = ["textContent"];
const _sfc_main$l = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-page"
  },
  __name: "page",
  props: PageProps,
  emits: ["update:modelValue", "change"],
  setup(__props, { emit: __emit }) {
    const props = __props;
    const emits = __emit;
    const elRef = ref(null);
    const pageStyle = computed(() => {
      return (item) => {
        let style = {};
        if (props.modelValue == item) {
          style.backgroundColor = props.color || "";
        } else {
          style.color = props.color || "";
        }
        return style;
      };
    });
    const arr = computed(() => {
      let arr2 = [];
      if (props.modelValue <= (props.overNumber - 1) / 2 + 1) {
        for (let i = 0; i < props.overNumber; i++) {
          arr2.push(i + 1);
        }
      } else if (props.modelValue <= props.total - (props.overNumber - 1) / 2) {
        for (let i = 0; i < (props.overNumber - 1) / 2; i++) {
          arr2.push(props.modelValue - ((props.overNumber - 1) / 2 - i));
        }
        arr2.push(props.modelValue);
        for (let i = 0; i < (props.overNumber - 1) / 2; i++) {
          arr2.push(props.modelValue + (i + 1));
        }
      } else {
        for (let i = 0; i < props.overNumber; i++) {
          arr2.push(props.total - (props.overNumber - 1 - i));
        }
      }
      return arr2;
    });
    const parseIcon = computed(() => {
      return (params) => {
        let icon2 = {
          spin: false,
          type: "",
          url: "",
          color: "",
          size: ""
        };
        if (obj.common.isObject(params)) {
          if (typeof params.spin == "boolean") {
            icon2.spin = params.spin;
          }
          if (typeof params.type == "string") {
            icon2.type = params.type;
          }
          if (typeof params.url == "string") {
            icon2.url = params.url;
          }
          if (typeof params.color == "string") {
            icon2.color = params.color;
          }
          if (typeof params.size == "string") {
            icon2.size = params.size;
          }
        } else if (typeof params == "string") {
          icon2.type = params;
        }
        return icon2;
      };
    });
    const firstStyle = computed(() => {
      let style = {};
      if (props.modelValue > 1 && props.color) {
        style.color = props.color;
      }
      return style;
    });
    const lastStyle = computed(() => {
      let style = {};
      if (props.modelValue < props.total && props.color) {
        style.color = props.color;
      }
      return style;
    });
    const pagePrev = () => {
      if (props.modelValue == 1) {
        return;
      }
      let page2 = props.modelValue - 1;
      emits("update:modelValue", page2);
      emits("change", page2);
    };
    const pageNext = () => {
      if (props.modelValue == props.total) {
        return;
      }
      let page2 = props.modelValue + 1;
      emits("update:modelValue", page2);
      emits("change", page2);
    };
    const pageFirst = () => {
      if (props.modelValue == 1) {
        return;
      }
      emits("update:modelValue", 1);
      emits("change", 1);
    };
    const pageLast = () => {
      if (props.modelValue == props.total) {
        return;
      }
      emits("update:modelValue", props.total);
      emits("change", props.total);
    };
    const toPage = (page2) => {
      if (props.modelValue == page2) {
        return;
      }
      if (page2 >= props.total) {
        page2 = props.total;
      }
      if (page2 <= 1) {
        page2 = 1;
      }
      emits("update:modelValue", page2);
      emits("change", page2);
    };
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: "mvi-page",
        ref_key: "elRef",
        ref: elRef
      }, [
        _ctx.firstText || parseIcon.value(_ctx.firstIcon).type || parseIcon.value(_ctx.firstIcon).url ? (openBlock(), createElementBlock("div", {
          key: 0,
          disabled: _ctx.modelValue == 1 || null,
          onClick: pageFirst,
          class: normalizeClass(["mvi-page-first", { active: _ctx.active && _ctx.modelValue != 1 }]),
          style: normalizeStyle(firstStyle.value)
        }, [
          parseIcon.value(_ctx.firstIcon).type || parseIcon.value(_ctx.firstIcon).url ? (openBlock(), createBlock(unref(Icon), {
            key: 0,
            class: normalizeClass({ "margin-right": !!_ctx.firstText }),
            type: parseIcon.value(_ctx.firstIcon).type,
            url: parseIcon.value(_ctx.firstIcon).url,
            spin: parseIcon.value(_ctx.firstIcon).spin,
            size: parseIcon.value(_ctx.firstIcon).size,
            color: parseIcon.value(_ctx.firstIcon).color
          }, null, 8, ["class", "type", "url", "spin", "size", "color"])) : createCommentVNode("", true),
          _ctx.firstText ? (openBlock(), createElementBlock("span", {
            key: 1,
            textContent: toDisplayString(_ctx.firstText)
          }, null, 8, _hoisted_2$e)) : createCommentVNode("", true)
        ], 14, _hoisted_1$g)) : createCommentVNode("", true),
        _ctx.prevText || parseIcon.value(_ctx.prevIcon).type || parseIcon.value(_ctx.prevIcon).url ? (openBlock(), createElementBlock("div", {
          key: 1,
          disabled: _ctx.modelValue == 1 || null,
          onClick: pagePrev,
          class: normalizeClass(["mvi-page-prev", { active: _ctx.active && _ctx.modelValue != 1 }]),
          style: normalizeStyle(firstStyle.value)
        }, [
          parseIcon.value(_ctx.prevIcon).type || parseIcon.value(_ctx.prevIcon).url ? (openBlock(), createBlock(unref(Icon), {
            key: 0,
            class: normalizeClass({ "margin-right": !!_ctx.prevText }),
            type: parseIcon.value(_ctx.prevIcon).type,
            url: parseIcon.value(_ctx.prevIcon).url,
            size: parseIcon.value(_ctx.prevIcon).size,
            spin: parseIcon.value(_ctx.prevIcon).spin,
            color: parseIcon.value(_ctx.prevIcon).color
          }, null, 8, ["class", "type", "url", "size", "spin", "color"])) : createCommentVNode("", true),
          _ctx.prevText ? (openBlock(), createElementBlock("span", {
            key: 1,
            textContent: toDisplayString(_ctx.prevText)
          }, null, 8, _hoisted_4$9)) : createCommentVNode("", true)
        ], 14, _hoisted_3$d)) : createCommentVNode("", true),
        createElementVNode("div", _hoisted_5$5, [
          _ctx.simple ? (openBlock(), createElementBlock("div", _hoisted_6$5, toDisplayString(_ctx.modelValue) + " / " + toDisplayString(_ctx.total), 1)) : (openBlock(), createElementBlock("div", _hoisted_7$4, [
            (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.total, (item) => {
              return openBlock(), createElementBlock(Fragment, null, [
                _ctx.total <= _ctx.overNumber ? (openBlock(), createElementBlock("div", {
                  key: 0,
                  class: normalizeClass(["mvi-page-numbers-item", { "number-active": _ctx.modelValue == item, active: _ctx.active && _ctx.modelValue != item }]),
                  textContent: toDisplayString(item),
                  onClick: ($event) => toPage(item),
                  style: normalizeStyle(pageStyle.value(item))
                }, null, 14, _hoisted_8$3)) : createCommentVNode("", true)
              ], 64);
            }), 256)),
            _ctx.total > _ctx.overNumber && _ctx.modelValue > (_ctx.overNumber - 1) / 2 + 1 ? (openBlock(), createElementBlock("div", {
              key: 0,
              class: normalizeClass(["mvi-page-numbers-item", { active: _ctx.active }]),
              onClick: _cache[0] || (_cache[0] = ($event) => toPage(_ctx.modelValue - (_ctx.overNumber - 1))),
              style: normalizeStyle({ color: _ctx.color || "" })
            }, "...", 6)) : createCommentVNode("", true),
            (openBlock(true), createElementBlock(Fragment, null, renderList(arr.value, (item) => {
              return openBlock(), createElementBlock(Fragment, null, [
                _ctx.total > _ctx.overNumber ? (openBlock(), createElementBlock("div", {
                  key: 0,
                  class: normalizeClass(["mvi-page-numbers-item", { "number-active": _ctx.modelValue == item, active: _ctx.active && _ctx.modelValue != item }]),
                  textContent: toDisplayString(item),
                  onClick: ($event) => toPage(item),
                  style: normalizeStyle(pageStyle.value(item))
                }, null, 14, _hoisted_9$2)) : createCommentVNode("", true)
              ], 64);
            }), 256)),
            _ctx.total > _ctx.overNumber && _ctx.modelValue < _ctx.total - (_ctx.overNumber - 1) / 2 ? (openBlock(), createElementBlock("div", {
              key: 1,
              class: normalizeClass(["mvi-page-numbers-item", { active: _ctx.active }]),
              onClick: _cache[1] || (_cache[1] = ($event) => toPage(_ctx.modelValue + (_ctx.overNumber - 1))),
              style: normalizeStyle({ color: _ctx.color || "" })
            }, "...", 6)) : createCommentVNode("", true)
          ]))
        ]),
        _ctx.nextText || parseIcon.value(_ctx.nextIcon).type || parseIcon.value(_ctx.nextIcon).url ? (openBlock(), createElementBlock("div", {
          key: 2,
          disabled: _ctx.modelValue == _ctx.total || null,
          onClick: pageNext,
          class: normalizeClass(["mvi-page-next", { active: _ctx.active && _ctx.modelValue != _ctx.total }]),
          style: normalizeStyle(lastStyle.value)
        }, [
          _ctx.nextText ? (openBlock(), createElementBlock("span", {
            key: 0,
            textContent: toDisplayString(_ctx.nextText)
          }, null, 8, _hoisted_11)) : createCommentVNode("", true),
          parseIcon.value(_ctx.nextIcon).type || parseIcon.value(_ctx.nextIcon).url ? (openBlock(), createBlock(unref(Icon), {
            key: 1,
            class: normalizeClass(_ctx.nextText ? "margin-left" : ""),
            type: parseIcon.value(_ctx.nextIcon).type,
            url: parseIcon.value(_ctx.nextIcon).url,
            size: parseIcon.value(_ctx.nextIcon).size,
            spin: parseIcon.value(_ctx.nextIcon).spin,
            color: parseIcon.value(_ctx.nextIcon).color
          }, null, 8, ["class", "type", "url", "size", "spin", "color"])) : createCommentVNode("", true)
        ], 14, _hoisted_10)) : createCommentVNode("", true),
        _ctx.lastText || parseIcon.value(_ctx.lastIcon).type || parseIcon.value(_ctx.lastIcon).url ? (openBlock(), createElementBlock("div", {
          key: 3,
          disabled: _ctx.modelValue == _ctx.total || null,
          onClick: pageLast,
          class: normalizeClass(["mvi-page-last", { active: _ctx.active && _ctx.modelValue != _ctx.total }]),
          style: normalizeStyle(lastStyle.value)
        }, [
          _ctx.lastText ? (openBlock(), createElementBlock("span", {
            key: 0,
            textContent: toDisplayString(_ctx.lastText)
          }, null, 8, _hoisted_13)) : createCommentVNode("", true),
          parseIcon.value(_ctx.lastIcon).type || parseIcon.value(_ctx.lastIcon).url ? (openBlock(), createBlock(unref(Icon), {
            key: 1,
            class: normalizeClass({ "margin-left": !!_ctx.lastText }),
            type: parseIcon.value(_ctx.lastIcon).type,
            url: parseIcon.value(_ctx.lastIcon).url,
            size: parseIcon.value(_ctx.lastIcon).size,
            spin: parseIcon.value(_ctx.lastIcon).spin,
            color: parseIcon.value(_ctx.lastIcon).color
          }, null, 8, ["class", "type", "url", "size", "spin", "color"])) : createCommentVNode("", true)
        ], 14, _hoisted_12)) : createCommentVNode("", true)
      ], 512);
    };
  }
});
const page = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["__scopeId", "data-v-1f69b033"]]);
const Page = withInstall(page);
const SearchProps = {
  //输入框的值
  modelValue: {
    type: [String, Number],
    default: ""
  },
  //输入框类型
  type: {
    type: String,
    default: "text"
  },
  //输入框占位符
  placeholder: {
    type: String,
    default: ""
  },
  //搜索框左侧文本
  label: {
    type: String,
    default: null
  },
  //搜索框是否圆形
  round: {
    type: Boolean,
    default: false
  },
  //输入的最大长度
  maxlength: {
    type: Number,
    default: -1
  },
  //是否自动聚焦
  autofocus: {
    type: Boolean,
    default: false
  },
  //是否在输入框右侧显示取消按钮
  showCancel: {
    type: Boolean,
    default: false
  },
  //取消按钮文字
  cancelText: {
    type: String,
    default: "取消"
  },
  //是否禁用
  disabled: {
    type: Boolean,
    default: false
  },
  //是否只读
  readonly: {
    type: Boolean,
    default: false
  },
  //输入框内容对齐方式
  align: {
    type: String,
    default: "left",
    validator(value) {
      return ["left", "center", "right"].includes(value);
    }
  },
  //左侧图标
  leftIcon: {
    type: [String, Object],
    default: null
  },
  //右侧图标
  rightIcon: {
    type: [String, Object],
    default: null
  },
  //使用清除图标
  clearable: {
    type: Boolean,
    default: false
  },
  //输入框调起移动端键盘类型
  inputMode: {
    type: String,
    default: "text",
    validator(value) {
      return ["none", "text", "decimal", "numeric", "tel", "search", "email", "url"].includes(value);
    }
  }
};
const _hoisted_1$f = ["disabled"];
const _hoisted_2$d = ["textContent"];
const _hoisted_3$c = ["type", "placeholder", "maxlength", "autofocus", "disabled", "readonly", "inputmode"];
const _hoisted_4$8 = ["textContent"];
const _sfc_main$k = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-search"
  },
  __name: "search",
  props: SearchProps,
  emits: ["update:modelValue", "search", "cancel", "left-click", "right-click", "focus", "blur", "input", "clear", "keydown", "keyup"],
  setup(__props, { emit: __emit }) {
    const props = __props;
    const emits = __emit;
    const focus = ref(false);
    const inputRef = ref(null);
    const realValue = computed({
      set(value) {
        if (props.modelValue !== value) {
          emits("update:modelValue", value);
        }
      },
      get() {
        let value = props.modelValue === null ? "" : props.modelValue.toString();
        if (props.type == "number") {
          value = value.replace(/\D/g, "");
        }
        if (props.maxlength > 0 && value.length > props.maxlength) {
          value = value.substring(0, props.maxlength);
        }
        if (props.modelValue !== value) {
          emits("update:modelValue", value);
        }
        return value;
      }
    });
    const parseIcon = computed(() => {
      return (params) => {
        let icon2 = {
          spin: false,
          type: "",
          url: "",
          color: "",
          size: ""
        };
        if (obj.common.isObject(params)) {
          if (typeof params.spin == "boolean") {
            icon2.spin = params.spin;
          }
          if (typeof params.type == "string") {
            icon2.type = params.type;
          }
          if (typeof params.url == "string") {
            icon2.url = params.url;
          }
          if (typeof params.color == "string") {
            icon2.color = params.color;
          }
          if (typeof params.size == "string") {
            icon2.size = params.size;
          }
        } else if (typeof params == "string") {
          icon2.type = params;
        }
        return icon2;
      };
    });
    const showClear = computed(() => {
      if (props.disabled || props.readonly) {
        return false;
      }
      if (focus.value) {
        if (realValue.value === "") {
          return false;
        }
        return true;
      }
      return false;
    });
    const cmpType = computed(() => {
      if (props.type == "number") {
        return "text";
      }
      return props.type;
    });
    const inputStyle = computed(() => {
      let style = {};
      if (props.align) {
        style.textAlign = props.align;
      }
      if (parseIcon.value(props.leftIcon).type || parseIcon.value(props.leftIcon).url) {
        style.paddingLeft = 0;
      }
      if (props.clearable && showClear.value || parseIcon.value(props.rightIcon).type || parseIcon.value(props.rightIcon).url) {
        style.paddingRight = 0;
      }
      return style;
    });
    const keydown = (e) => {
      if (props.disabled) {
        return;
      }
      emits("keydown", e, realValue.value);
    };
    const keyup = (e) => {
      if (props.disabled) {
        return;
      }
      emits("keyup", e, realValue.value);
    };
    const inputFocus = () => {
      if (props.disabled) {
        return;
      }
      focus.value = true;
      emits("focus", realValue.value);
    };
    const inputBlur = () => {
      if (props.disabled) {
        return;
      }
      setTimeout(() => {
        focus.value = false;
        emits("blur", realValue.value);
      }, 200);
    };
    const searchInput = () => {
      if (props.disabled) {
        return;
      }
      emits("input", realValue.value);
    };
    const doSearch = () => {
      if (props.disabled) {
        return;
      }
      emits("search", realValue.value);
    };
    const doCancel = () => {
      if (props.disabled) {
        return;
      }
      emits("cancel", realValue.value);
    };
    const leftClick = () => {
      if (props.disabled) {
        return;
      }
      emits("left-click", realValue.value);
    };
    const rightClick = () => {
      if (props.disabled) {
        return;
      }
      emits("right-click", realValue.value);
    };
    const clearInput = () => {
      if (props.disabled) {
        return;
      }
      if (!props.clearable) {
        return;
      }
      setTimeout(() => {
        realValue.value = "";
        inputRef.value.focus();
        emits("clear", realValue.value);
      }, 210);
    };
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: "mvi-search",
        disabled: _ctx.disabled || null
      }, [
        _ctx.label ? (openBlock(), createElementBlock("div", {
          key: 0,
          class: "mvi-search-label",
          textContent: toDisplayString(_ctx.label)
        }, null, 8, _hoisted_2$d)) : createCommentVNode("", true),
        createElementVNode("div", {
          class: normalizeClass(["mvi-search-input-container", { round: _ctx.round }])
        }, [
          parseIcon.value(_ctx.leftIcon).type || parseIcon.value(_ctx.leftIcon).url ? (openBlock(), createElementBlock("div", {
            key: 0,
            class: "mvi-search-left-icon",
            onClick: leftClick
          }, [
            createVNode(unref(Icon), {
              type: parseIcon.value(_ctx.leftIcon).type,
              url: parseIcon.value(_ctx.leftIcon).url,
              spin: parseIcon.value(_ctx.leftIcon).spin,
              size: parseIcon.value(_ctx.leftIcon).size,
              color: parseIcon.value(_ctx.leftIcon).color
            }, null, 8, ["type", "url", "spin", "size", "color"])
          ])) : createCommentVNode("", true),
          withDirectives(createElementVNode("input", {
            ref_key: "inputRef",
            ref: inputRef,
            class: normalizeClass(["mvi-search-input", { "left-none-radius": parseIcon.value(_ctx.leftIcon).type || parseIcon.value(_ctx.leftIcon).url, "right-none-radius": parseIcon.value(_ctx.rightIcon).type || parseIcon.value(_ctx.rightIcon).url || _ctx.clearable && showClear.value }]),
            type: cmpType.value,
            onKeypress: withKeys(doSearch, ["enter"]),
            autocomplete: "off",
            placeholder: _ctx.placeholder,
            maxlength: _ctx.maxlength,
            autofocus: _ctx.autofocus,
            disabled: _ctx.disabled,
            readonly: _ctx.readonly,
            inputmode: _ctx.inputMode,
            "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => realValue.value = $event),
            onInput: searchInput,
            onFocus: inputFocus,
            onBlur: inputBlur,
            onKeydown: keydown,
            onKeyup: keyup,
            style: normalizeStyle(inputStyle.value)
          }, null, 46, _hoisted_3$c), [
            [vModelDynamic, realValue.value]
          ]),
          _ctx.clearable ? withDirectives((openBlock(), createElementBlock("div", {
            key: 1,
            class: "mvi-search-clear",
            onClick: clearInput
          }, [
            createVNode(unref(Icon), { type: "times-o" })
          ], 512)), [
            [vShow, showClear.value]
          ]) : createCommentVNode("", true),
          parseIcon.value(_ctx.rightIcon).type || parseIcon.value(_ctx.rightIcon).url ? (openBlock(), createElementBlock("div", {
            key: 2,
            class: "mvi-search-right-icon",
            onClick: rightClick
          }, [
            createVNode(unref(Icon), {
              type: parseIcon.value(_ctx.rightIcon).type,
              url: parseIcon.value(_ctx.rightIcon).url,
              spin: parseIcon.value(_ctx.rightIcon).spin,
              size: parseIcon.value(_ctx.rightIcon).size,
              color: parseIcon.value(_ctx.rightIcon).color
            }, null, 8, ["type", "url", "spin", "size", "color"])
          ])) : createCommentVNode("", true)
        ], 2),
        _ctx.showCancel ? (openBlock(), createElementBlock("div", {
          key: 1,
          textContent: toDisplayString(_ctx.cancelText),
          class: "mvi-search-cancel",
          onClick: doCancel
        }, null, 8, _hoisted_4$8)) : createCommentVNode("", true)
      ], 8, _hoisted_1$f);
    };
  }
});
const search = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["__scopeId", "data-v-9e26b64d"]]);
const Search = withInstall(search);
const SelectProps = {
  //选择的值
  modelValue: {
    type: [Object, Number, String, Array],
    default: null
  },
  //选项
  options: {
    type: Array,
    default: []
  },
  //占位符
  placeholder: {
    type: String,
    default: ""
  },
  //尺寸
  size: {
    type: String,
    default: "medium",
    validator(value) {
      return ["small", "medium", "large"].includes(value);
    }
  },
  //layer组件参数
  layerProps: {
    type: Object,
    default: function() {
      return {};
    }
  },
  //下拉框最大高度
  height: {
    type: String,
    default: null
  },
  //输入框激活样式
  activeType: {
    type: String,
    default: "info",
    validator(value) {
      return ["info", "success", "warn", "primary", "error"].includes(value);
    }
  },
  //输入框激活颜色
  activeColor: {
    type: String,
    default: null,
    validator(value) {
      return obj.common.matchingText(value, "hex");
    }
  },
  //是否禁用
  disabled: {
    type: Boolean,
    default: false
  },
  //下拉图标
  icon: {
    type: String,
    default: "caret-down"
  },
  //原生name属性
  name: {
    type: String,
    default: null
  },
  //是否圆角
  round: {
    type: Boolean,
    default: false
  },
  //是否方形
  square: {
    type: Boolean,
    default: false
  },
  //是否多选
  multiple: {
    type: Boolean,
    default: false
  },
  //选择时显示内容的过滤方法
  filterMethod: {
    type: Function,
    default: null
  },
  //是否展示已选择标识
  showSelected: {
    type: Boolean,
    default: true
  },
  //已选择标识的icon
  selectedIcon: {
    type: [String, Object],
    default: "success"
  },
  //显示清除图标
  clearable: {
    type: Boolean,
    default: false
  },
  //选项字段配置
  props: {
    type: Object,
    default: function() {
      return {
        label: "label",
        value: "value"
      };
    }
  },
  //无选项提示文字
  emptyText: {
    type: String,
    default: "暂无数据"
  }
};
const _hoisted_1$e = ["data-id", "disabled"];
const _hoisted_2$c = ["data-placeholder", "innerHTML"];
const _hoisted_3$b = ["value", "name"];
const _hoisted_4$7 = ["onClick", "disabled"];
const _hoisted_5$4 = ["innerHTML"];
const _hoisted_6$4 = {
  key: 1,
  class: "mvi-select-empty"
};
const _sfc_main$j = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-select",
    inheritAttrs: false
  },
  __name: "select",
  props: SelectProps,
  emits: ["update:modelValue", "change", "clear"],
  setup(__props, { emit: __emit }) {
    const instance = getCurrentInstance();
    const props = __props;
    const emits = __emit;
    const hover = ref(false);
    const focus = ref(false);
    const relateRef = ref(null);
    const menuRef = ref(null);
    const formData = computed(() => {
      if (props.multiple && Array.isArray(props.modelValue)) {
        return props.modelValue.join(",");
      }
      return props.modelValue;
    });
    const relateClass = computed(() => {
      let cls = [props.size];
      if (props.round) {
        cls.push("round");
      } else if (props.square) {
        cls.push("square");
      }
      if (props.activeType && !props.activeColor && focus.value) {
        cls.push(props.activeType);
      }
      return cls;
    });
    const relateStyle = computed(() => {
      let style = {};
      if (props.activeColor && focus.value) {
        style.borderColor = props.activeColor;
        const rgb = obj.color.hex2rgb(props.activeColor);
        style.boxShadow = `0 0 0.16rem rgba(${rgb[0]},${rgb[1]},${rgb[2]},0.5)`;
      }
      return style;
    });
    const cmpOptions = computed(() => {
      let options = [];
      props.options.forEach((opt) => {
        let item = {};
        if (obj.common.isObject(opt)) {
          item.label = opt[props.props.label];
          item.value = opt[props.props.value];
          item.disabled = !!opt.disabled;
        } else {
          item.label = opt;
          item.value = opt;
          item.disabled = false;
        }
        options.push(item);
      });
      return options;
    });
    const selectLabel = computed(() => {
      if (props.multiple) {
        let labels = [];
        cmpOptions.value.forEach((item) => {
          if (Array.isArray(props.modelValue)) {
            let flag = props.modelValue.some((i) => {
              return obj.common.equal(i, item.value);
            });
            if (flag) {
              labels.push(item.label);
            }
          }
        });
        if (typeof props.filterMethod == "function") {
          return props.filterMethod(labels);
        }
        return labels.join(" ");
      }
      let label2 = "";
      cmpOptions.value.forEach((item) => {
        if (obj.common.equal(props.modelValue, item.value)) {
          label2 = item.label;
        }
      });
      if (typeof props.filterMethod == "function") {
        return props.filterMethod(label2);
      }
      return label2;
    });
    const isSelect = computed(() => {
      return (item) => {
        if (props.multiple) {
          let flag = props.modelValue.some((i) => {
            return obj.common.equal(i, item.value);
          });
          return props.showSelected && flag;
        }
        return false;
      };
    });
    const parseIcon = computed(() => {
      return (params) => {
        let icon2 = {
          spin: false,
          type: "",
          url: "",
          color: "",
          size: ""
        };
        if (obj.common.isObject(params)) {
          if (typeof params.spin == "boolean") {
            icon2.spin = params.spin;
          }
          if (typeof params.type == "string") {
            icon2.type = params.type;
          }
          if (typeof params.url == "string") {
            icon2.url = params.url;
          }
          if (typeof params.color == "string") {
            icon2.color = params.color;
          }
          if (typeof params.size == "string") {
            icon2.size = params.size;
          }
        } else if (typeof params == "string") {
          icon2.type = params;
        }
        return icon2;
      };
    });
    const showClearIcon = computed(() => {
      if (props.disabled) {
        return false;
      }
      if (props.multiple) {
        if (props.modelValue.length != 0 && hover.value) {
          return true;
        }
        return false;
      } else {
        if (props.modelValue === "" || props.modelValue === null || props.modelValue === void 0 || !hover.value) {
          return false;
        }
        return true;
      }
    });
    const layerRealProps = computed(() => {
      return {
        placement: props.layerProps.placement ? props.layerProps.placement : "bottom-start",
        width: props.layerProps.width,
        zIndex: obj.number.isNumber(props.layerProps.zIndex) ? props.layerProps.zIndex : 400,
        offset: props.layerProps.offset ? props.layerProps.offset : "0.1rem",
        animation: props.layerProps.animation,
        timeout: obj.number.isNumber(props.layerProps.timeout) ? props.layerProps.timeout : 200,
        showTriangle: typeof props.layerProps.showTriangle == "boolean" ? props.layerProps.showTriangle : false,
        shadow: typeof props.layerProps.shadow == "boolean" ? props.layerProps.shadow : true,
        border: typeof props.layerProps.border == "boolean" ? props.layerProps.border : false,
        borderColor: props.layerProps.borderColor
      };
    });
    const doClear = (e) => {
      e.stopPropagation();
      if (props.disabled) {
        return;
      }
      if (!props.clearable) {
        return;
      }
      if (focus.value) {
        focus.value = false;
      }
      if (props.multiple) {
        emits("update:modelValue", []);
        emits("clear", []);
      } else {
        emits("update:modelValue", null);
        emits("clear", null);
      }
    };
    const layerShow = () => {
      if (!layerRealProps.value.width) {
        menuRef.value.style.width = relateRef.value.offsetWidth + "px";
      }
    };
    const trigger = () => {
      if (props.disabled) {
        return;
      }
      focus.value = !focus.value;
    };
    const optionClick = (item) => {
      if (props.disabled || item.disabled) {
        return;
      }
      if (props.multiple) {
        let arr = props.modelValue;
        if (!Array.isArray(arr)) {
          throw new TypeError("modelValue should be an array");
        }
        let flag = arr.some((tmp) => {
          return obj.common.equal(tmp, item.value);
        });
        if (flag) {
          arr = arr.filter((tmp) => {
            return !obj.common.equal(tmp, item.value);
          });
        } else {
          arr.push(item.value);
        }
        emits("update:modelValue", arr);
        emits(
          "change",
          cmpOptions.value.filter((tmp) => {
            return arr.some((tmp2) => {
              return obj.common.equal(tmp.value, tmp2);
            });
          })
        );
      } else {
        emits("update:modelValue", item.value);
        emits("change", item);
        trigger();
      }
    };
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock(Fragment, null, [
        createElementVNode("div", mergeProps({
          class: ["mvi-select", relateClass.value],
          "data-id": "mvi-select-" + unref(instance).uid,
          style: relateStyle.value,
          ref_key: "relateRef",
          ref: relateRef,
          onMouseenter: _cache[0] || (_cache[0] = ($event) => hover.value = true),
          onMouseleave: _cache[1] || (_cache[1] = ($event) => hover.value = false),
          onClick: trigger,
          disabled: _ctx.disabled || null
        }, _ctx.$attrs), [
          createElementVNode("span", {
            class: normalizeClass(["mvi-select-label", { placeholder: !selectLabel.value }]),
            "data-placeholder": _ctx.placeholder,
            innerHTML: selectLabel.value
          }, null, 10, _hoisted_2$c),
          _ctx.clearable ? withDirectives((openBlock(), createBlock(unref(Icon), {
            key: 0,
            onClick: doClear,
            class: "mvi-clear-icon",
            type: "times-o"
          }, null, 512)), [
            [vShow, showClearIcon.value]
          ]) : createCommentVNode("", true),
          withDirectives(createVNode(unref(Icon), {
            class: normalizeClass(["mvi-select-icon", { active: focus.value }]),
            type: _ctx.icon
          }, null, 8, ["class", "type"]), [
            [vShow, !_ctx.clearable || !showClearIcon.value]
          ]),
          createElementVNode("input", {
            type: "hidden",
            value: formData.value,
            name: _ctx.name
          }, null, 8, _hoisted_3$b)
        ], 16, _hoisted_1$e),
        createVNode(unref(Layer), {
          modelValue: focus.value,
          "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => focus.value = $event),
          relate: `[data-id='mvi-select-${unref(instance).uid}']`,
          placement: layerRealProps.value.placement,
          offset: layerRealProps.value.offset,
          "z-index": layerRealProps.value.zIndex,
          closable: "",
          "show-triangle": layerRealProps.value.showTriangle,
          animation: layerRealProps.value.animation,
          timeout: layerRealProps.value.timeout,
          shadow: layerRealProps.value.shadow,
          border: layerRealProps.value.border,
          "border-color": layerRealProps.value.borderColor,
          width: layerRealProps.value.width,
          onShowing: layerShow
        }, {
          default: withCtx(() => [
            createElementVNode("div", {
              class: normalizeClass(["mvi-select-menu", [_ctx.size]]),
              ref_key: "menuRef",
              ref: menuRef,
              style: normalizeStyle({ maxHeight: _ctx.height })
            }, [
              cmpOptions.value.length ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(cmpOptions.value, (item) => {
                return openBlock(), createElementBlock("div", {
                  class: "mvi-select-option",
                  onClick: ($event) => optionClick(item),
                  disabled: item.disabled || null
                }, [
                  createElementVNode("div", {
                    class: "mvi-select-option-value",
                    innerHTML: item.label
                  }, null, 8, _hoisted_5$4),
                  isSelect.value(item) ? (openBlock(), createBlock(unref(Icon), {
                    key: 0,
                    type: parseIcon.value(_ctx.selectedIcon).type,
                    spin: parseIcon.value(_ctx.selectedIcon).spin,
                    size: parseIcon.value(_ctx.selectedIcon).size,
                    url: parseIcon.value(_ctx.selectedIcon).url,
                    color: parseIcon.value(_ctx.selectedIcon).color
                  }, null, 8, ["type", "spin", "size", "url", "color"])) : createCommentVNode("", true)
                ], 8, _hoisted_4$7);
              }), 256)) : (openBlock(), createElementBlock("div", _hoisted_6$4, toDisplayString(_ctx.emptyText), 1))
            ], 6)
          ]),
          _: 1
        }, 8, ["modelValue", "relate", "placement", "offset", "z-index", "show-triangle", "animation", "timeout", "shadow", "border", "border-color", "width"])
      ], 64);
    };
  }
});
const select = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["__scopeId", "data-v-fdf439db"]]);
const Select = withInstall(select);
const SkeletonProps = {
  //是否加载状态
  loading: {
    type: Boolean,
    default: true
  },
  //行数
  rows: {
    type: Number,
    default: 1,
    validator(value) {
      return value > 0;
    }
  },
  //每行宽度
  rowWidth: {
    type: [String, Array],
    default: null
  },
  //是否显示头像占位
  avatar: {
    type: Boolean,
    default: false
  },
  //是否显示标题占位
  title: {
    type: Boolean,
    default: false
  },
  //标题占位宽度
  titleWidth: {
    type: String,
    default: null
  },
  //是否显示动画效果
  animation: {
    type: Boolean,
    default: false
  },
  //标题段落是否展示圆角
  round: {
    type: Boolean,
    default: false
  },
  //头像占位大小
  avatarSize: {
    type: String,
    default: null
  },
  //头像占位是否展示圆角
  avatarRound: {
    type: Boolean,
    default: false
  }
};
const _hoisted_1$d = { class: "mvi-skeleton-container" };
const _hoisted_2$b = {
  key: 0,
  class: "mvi-skeleton-avatar"
};
const _hoisted_3$a = { class: "mvi-skeleton-rows" };
const _sfc_main$i = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-skeleton"
  },
  __name: "skeleton",
  props: SkeletonProps,
  setup(__props) {
    const props = __props;
    const rowStyle = computed(() => {
      return (index) => {
        let style = {};
        if (props.rowWidth && typeof props.rowWidth == "string") {
          style.width = props.rowWidth;
        } else if (Array.isArray(props.rowWidth)) {
          style.width = props.rowWidth[index] || "";
        }
        return style;
      };
    });
    const rowsArray = computed(() => {
      let arr = [];
      for (let i = 0; i < props.rows; i++) {
        arr.push(i);
      }
      return arr;
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", _hoisted_1$d, [
        _ctx.loading ? (openBlock(), createElementBlock("div", {
          key: 0,
          class: normalizeClass(["mvi-skeleton", { animation: _ctx.animation }])
        }, [
          _ctx.avatar ? (openBlock(), createElementBlock("div", _hoisted_2$b, [
            createElementVNode("div", {
              class: normalizeClass(["mvi-skeleton-avatar-el", { round: _ctx.avatarRound }]),
              style: normalizeStyle({ width: _ctx.avatarSize || "", height: _ctx.avatarSize || "" })
            }, null, 6)
          ])) : createCommentVNode("", true),
          createElementVNode("div", _hoisted_3$a, [
            _ctx.title ? (openBlock(), createElementBlock("div", {
              key: 0,
              class: normalizeClass(["mvi-skeleton-title", { round: _ctx.round }]),
              style: normalizeStyle({ width: _ctx.titleWidth || "" })
            }, null, 6)) : createCommentVNode("", true),
            (openBlock(true), createElementBlock(Fragment, null, renderList(rowsArray.value, (item) => {
              return openBlock(), createElementBlock("div", {
                style: normalizeStyle(rowStyle.value(item)),
                class: normalizeClass(["mvi-skeleton-row", { round: _ctx.round }])
              }, null, 6);
            }), 256))
          ])
        ], 2)) : renderSlot(_ctx.$slots, "default", { key: 1 }, void 0, true)
      ]);
    };
  }
});
const skeleton = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["__scopeId", "data-v-616c2ea9"]]);
const Skeleton = withInstall(skeleton);
const StepsProps = {
  //当前步骤
  active: {
    type: Number,
    default: 0
  },
  //是否垂直
  vertical: {
    type: Boolean,
    default: false
  },
  //激活状态的颜色
  activeColor: {
    type: String,
    default: null
  },
  //未激活状态的颜色
  inactiveColor: {
    type: String,
    default: null
  },
  //激活状态的图标
  activeIcon: {
    type: [String, Object],
    default: "success-o"
  },
  //未激活状态的图标
  inactiveIcon: {
    type: [String, Object],
    default: null
  }
};
const _sfc_main$h = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-steps"
  },
  __name: "steps",
  props: StepsProps,
  setup(__props) {
    const instance = getCurrentInstance();
    componentIsMatch(instance, "m-step", ["Steps", "Step"]);
    const children = ref([]);
    provide("steps", instance);
    provide("stepChildren", children);
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["mvi-steps", { vertical: _ctx.vertical }])
      }, [
        renderSlot(_ctx.$slots, "default", {}, void 0, true)
      ], 2);
    };
  }
});
const steps = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["__scopeId", "data-v-3df8e56e"]]);
const Steps = withInstall(steps);
const _hoisted_1$c = { class: "mvi-step-vertical-container" };
const _hoisted_2$a = { class: "mvi-step-vertical-icon" };
const _hoisted_3$9 = { class: "mvi-step-container" };
const _sfc_main$g = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-step"
  },
  __name: "step",
  setup(__props) {
    const instance = getCurrentInstance();
    const steps2 = inject("steps", null);
    const stepChildren = inject("stepChildren", null);
    parentIsMatch(stepChildren, steps2, "m-steps", ["Steps", "Step"]);
    stepChildren.value.push(instance);
    const elRef = ref(null);
    const parseIcon = computed(() => {
      return (params) => {
        let icon2 = {
          spin: false,
          type: "",
          url: "",
          color: "",
          size: ""
        };
        if (obj.common.isObject(params)) {
          if (typeof params.spin == "boolean") {
            icon2.spin = params.spin;
          }
          if (typeof params.type == "string") {
            icon2.type = params.type;
          }
          if (typeof params.url == "string") {
            icon2.url = params.url;
          }
          if (typeof params.color == "string") {
            icon2.color = params.color;
          }
          if (typeof params.size == "string") {
            icon2.size = params.size;
          }
        } else if (typeof params == "string") {
          icon2.type = params;
        }
        return icon2;
      };
    });
    const stepIndex = computed(() => {
      return stepChildren.value.findIndex((vm) => {
        return obj.common.equal(vm.uid, instance.uid);
      });
    });
    const labelStyle = computed(() => {
      let style = {};
      if (steps2.props.activeColor) {
        if (steps2.props.active == stepIndex.value) {
          style.color = steps2.props.activeColor;
        }
      }
      if (steps2.props.inactiveColor) {
        if (steps2.props.active != stepIndex.value) {
          style.color = steps2.props.inactiveColor;
        }
      }
      return style;
    });
    const activeIconStyle = computed(() => {
      let style = {};
      if (steps2.props.activeColor) {
        if (steps2.props.active == stepIndex.value) {
          style.color = steps2.props.activeColor;
        }
      }
      return style;
    });
    const inactiveIconStyle = computed(() => {
      let style = {};
      if (steps2.props.inactiveColor) {
        if (stepIndex.value > steps2.props.active) {
          style.color = steps2.props.inactiveColor;
        }
      }
      if (steps2.props.activeColor) {
        if (stepIndex.value <= steps2.props.active) {
          style.color = steps2.props.activeColor;
        }
      }
      return style;
    });
    const circleStyle = computed(() => {
      let style = {};
      if (stepIndex.value <= steps2.props.active) {
        if (steps2.props.activeColor) {
          style.backgroundColor = steps2.props.activeColor;
        }
      } else {
        if (steps2.props.inactiveColor) {
          style.backgroundColor = steps2.props.inactiveColor;
        }
      }
      return style;
    });
    const activeCircleStyle = computed(() => {
      let style = {};
      if (steps2.props.activeColor) {
        if (steps2.props.active == stepIndex.value) {
          style.backgroundColor = steps2.props.activeColor;
        }
      }
      return style;
    });
    const lineStyle = computed(() => {
      let style = {};
      if (steps2.props.activeColor) {
        if (stepIndex.value < steps2.props.active) {
          if (steps2.props.vertical) {
            style.borderRightColor = steps2.props.activeColor;
          } else {
            style.borderTopColor = steps2.props.activeColor;
          }
        }
      }
      if (steps2.props.inactiveColor) {
        if (stepIndex.value >= steps2.props.active) {
          if (steps2.props.vertical) {
            style.borderRightColor = steps2.props.inactiveColor;
          } else {
            style.borderTopColor = steps2.props.inactiveColor;
          }
        }
      }
      return style;
    });
    onBeforeUnmount(() => {
      stepChildren.value.splice(stepIndex.value, 1);
    });
    return (_ctx, _cache) => {
      return unref(steps2).props.vertical ? (openBlock(), createElementBlock("div", {
        key: 0,
        class: "mvi-step-vertical",
        ref_key: "elRef",
        ref: elRef
      }, [
        createElementVNode("div", {
          class: normalizeClass(["mvi-step-vertical-label", { finish: stepIndex.value == unref(steps2).props.active }]),
          style: normalizeStyle(labelStyle.value)
        }, [
          renderSlot(_ctx.$slots, "default", {}, void 0, true)
        ], 6),
        createElementVNode("div", _hoisted_1$c, [
          createElementVNode("div", _hoisted_2$a, [
            unref(steps2).props.active == stepIndex.value && (parseIcon.value(unref(steps2).props.activeIcon).type || parseIcon.value(unref(steps2).props.activeIcon).url) ? (openBlock(), createBlock(unref(Icon), {
              key: 0,
              class: "mvi-step-icon-active-el",
              type: parseIcon.value(unref(steps2).props.activeIcon).type,
              url: parseIcon.value(unref(steps2).props.activeIcon).url,
              spin: parseIcon.value(unref(steps2).props.activeIcon).spin,
              size: parseIcon.value(unref(steps2).props.activeIcon).size,
              color: parseIcon.value(unref(steps2).props.activeIcon).color,
              style: normalizeStyle(activeIconStyle.value)
            }, null, 8, ["type", "url", "spin", "size", "color", "style"])) : unref(steps2).props.active == stepIndex.value ? (openBlock(), createElementBlock("div", {
              key: 1,
              class: "mvi-step-circle-active",
              style: normalizeStyle(activeCircleStyle.value)
            }, null, 4)) : parseIcon.value(unref(steps2).props.inactiveIcon).type || parseIcon.value(unref(steps2).props.inactiveIcon).url ? (openBlock(), createBlock(unref(Icon), {
              key: 2,
              class: normalizeClass(["mvi-step-icon-inactive-el", stepIndex.value <= unref(steps2).props.active ? "finish" : ""]),
              type: parseIcon.value(unref(steps2).props.inactiveIcon).type,
              url: parseIcon.value(unref(steps2).props.inactiveIcon).url,
              spin: parseIcon.value(unref(steps2).props.inactiveIcon).spin,
              size: parseIcon.value(unref(steps2).props.inactiveIcon).size,
              color: parseIcon.value(unref(steps2).props.inactiveIcon).color,
              style: normalizeStyle(inactiveIconStyle.value)
            }, null, 8, ["class", "type", "url", "spin", "size", "color", "style"])) : (openBlock(), createElementBlock("div", {
              key: 3,
              class: normalizeClass(["mvi-step-circle", { finish: stepIndex.value <= unref(steps2).props.active }]),
              style: normalizeStyle(circleStyle.value)
            }, null, 6))
          ]),
          createElementVNode("div", {
            class: normalizeClass(["mvi-step-vertical-line", { last: stepIndex.value == unref(stepChildren).length - 1, finish: stepIndex.value < unref(steps2).props.active }]),
            style: normalizeStyle(lineStyle.value)
          }, null, 6)
        ])
      ], 512)) : (openBlock(), createElementBlock("div", {
        key: 1,
        class: normalizeClass(["mvi-step", { last: stepIndex.value == unref(stepChildren).length - 1 }]),
        ref_key: "elRef",
        ref: elRef
      }, [
        createElementVNode("div", {
          class: normalizeClass(["mvi-step-label", { last: stepIndex.value == unref(stepChildren).length - 1, first: stepIndex.value == 0, finish: stepIndex.value == unref(steps2).props.active }]),
          style: normalizeStyle(labelStyle.value)
        }, [
          createElementVNode("div", null, [
            renderSlot(_ctx.$slots, "default", {}, void 0, true)
          ])
        ], 6),
        createElementVNode("div", _hoisted_3$9, [
          createElementVNode("div", {
            class: normalizeClass(["mvi-step-icon", { last: stepIndex.value == unref(stepChildren).length - 1 }])
          }, [
            unref(steps2).props.active == stepIndex.value && (parseIcon.value(unref(steps2).props.activeIcon).type || parseIcon.value(unref(steps2).props.activeIcon).url) ? (openBlock(), createBlock(unref(Icon), {
              key: 0,
              class: "mvi-step-icon-active-el",
              type: parseIcon.value(unref(steps2).props.activeIcon).type,
              url: parseIcon.value(unref(steps2).props.activeIcon).url,
              spin: parseIcon.value(unref(steps2).props.activeIcon).spin,
              size: parseIcon.value(unref(steps2).props.activeIcon).size,
              color: parseIcon.value(unref(steps2).props.activeIcon).color,
              style: normalizeStyle(activeIconStyle.value)
            }, null, 8, ["type", "url", "spin", "size", "color", "style"])) : unref(steps2).props.active == stepIndex.value ? (openBlock(), createElementBlock("div", {
              key: 1,
              class: "mvi-step-circle-active",
              style: normalizeStyle(activeCircleStyle.value)
            }, null, 4)) : parseIcon.value(unref(steps2).props.inactiveIcon).type || parseIcon.value(unref(steps2).props.inactiveIcon).url ? (openBlock(), createBlock(unref(Icon), {
              key: 2,
              class: normalizeClass(["mvi-step-icon-inactive-el", { finish: stepIndex.value <= unref(steps2).props.active }]),
              type: parseIcon.value(unref(steps2).props.inactiveIcon).type,
              url: parseIcon.value(unref(steps2).props.inactiveIcon).url,
              spin: parseIcon.value(unref(steps2).props.inactiveIcon).spin,
              size: parseIcon.value(unref(steps2).props.inactiveIcon).size,
              color: parseIcon.value(unref(steps2).props.inactiveIcon).color,
              style: normalizeStyle(inactiveIconStyle.value)
            }, null, 8, ["class", "type", "url", "spin", "size", "color", "style"])) : (openBlock(), createElementBlock("div", {
              key: 3,
              class: normalizeClass(["mvi-step-circle", { finish: stepIndex.value <= unref(steps2).props.active }]),
              style: normalizeStyle(circleStyle.value)
            }, null, 6))
          ], 2),
          createElementVNode("div", {
            class: normalizeClass(["mvi-step-line", { last: stepIndex.value == unref(stepChildren).length - 1, finish: stepIndex.value < unref(steps2).props.active }]),
            style: normalizeStyle(lineStyle.value)
          }, null, 6)
        ])
      ], 2));
    };
  }
});
const step = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["__scopeId", "data-v-b2c607ef"]]);
const Step = withInstall(step);
const StepperProps = {
  //输入框的值
  modelValue: {
    type: Number,
    default: 0
  },
  //步进
  step: {
    type: Number,
    default: 1
  },
  //尺寸
  size: {
    type: String,
    default: "medium",
    validator(value) {
      return ["small", "medium", "large"].includes(value);
    }
  },
  //最小值
  min: {
    type: Number,
    default: null
  },
  //最大值
  max: {
    type: Number,
    default: null
  },
  //显示小数位数
  digit: {
    type: Number,
    default: 0
  },
  //是否禁用
  disabled: {
    type: Boolean,
    default: false
  },
  //是否禁用加号
  disabledPlus: {
    type: Boolean,
    default: false
  },
  //是否禁用减号
  disabledMinus: {
    type: Boolean,
    default: false
  },
  //是否禁用输入框
  disabledInput: {
    type: Boolean,
    default: false
  },
  //是否显示加号
  showPlus: {
    type: Boolean,
    default: true
  },
  //是否显示减号
  showMinus: {
    type: Boolean,
    default: true
  },
  //是否显示输入框
  showInput: {
    type: Boolean,
    default: true
  },
  //输入框宽度
  inputWidth: {
    type: String,
    default: null
  },
  //是否显示点击态
  active: {
    type: Boolean,
    default: true
  },
  //输入框数字对齐方式
  inputAlign: {
    type: String,
    default: "center",
    validator(value) {
      return ["left", "center", "right"].includes(value);
    }
  },
  //是否显示边框
  border: {
    type: Boolean,
    default: false
  }
};
const _hoisted_1$b = ["disabled"];
const _hoisted_2$9 = ["disabled"];
const _hoisted_3$8 = ["disabled"];
const _hoisted_4$6 = ["disabled"];
const _sfc_main$f = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-stepper"
  },
  __name: "stepper",
  props: StepperProps,
  emits: ["update:modelValue", "change"],
  setup(__props, { emit: __emit }) {
    const props = __props;
    const emits = __emit;
    const inputRef = ref(null);
    const realValue = computed({
      set(value) {
        let val = updateValue(value);
        if (props.modelValue !== val) {
          emits("update:modelValue", val);
          emits("change", val);
        }
      },
      get() {
        return props.modelValue;
      }
    });
    const arrivalMin = computed(() => {
      if (props.min != null) {
        return realValue.value <= props.min;
      }
      return false;
    });
    const arrivalMax = computed(() => {
      if (props.max != null) {
        return realValue.value >= props.max;
      }
      return false;
    });
    const minusClass = computed(() => {
      let cls = [];
      if (!(props.disabledMinus || arrivalMin.value || props.disabled) && props.active) {
        cls.push("active");
      }
      if (props.border) {
        cls.push("border");
      }
      return cls;
    });
    const plusClass = computed(() => {
      let cls = [];
      if (!(props.disabledPlus || arrivalMax.value || props.disabled) && props.active) {
        cls.push("active");
      }
      if (props.border) {
        cls.push("border");
      }
      return cls;
    });
    const updateValue = (value) => {
      let val = parseFloat(value);
      if (isNaN(val)) {
        val = 0;
      }
      val = Number(val.toFixed(props.digit));
      if (val <= props.min && props.min != null) {
        val = props.min;
      }
      if (val >= props.max && props.max != null) {
        val = props.max;
      }
      return val;
    };
    const doMinus = () => {
      if (props.disabled) {
        return;
      }
      if (props.disabledMinus) {
        return;
      }
      if (arrivalMin.value) {
        return;
      }
      realValue.value = obj.number.subtract(realValue.value, props.step);
    };
    const doPlus = () => {
      if (props.disabled) {
        return;
      }
      if (props.disabledPlus) {
        return;
      }
      if (arrivalMax.value) {
        return;
      }
      realValue.value = obj.number.add(realValue.value, props.step);
    };
    const changeValue = () => {
      if (props.disabled) {
        return;
      }
      if (props.disabledInput) {
        return;
      }
      inputRef.value.value = "" + realValue.value;
    };
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["mvi-stepper", [_ctx.size]])
      }, [
        _ctx.showMinus ? (openBlock(), createElementBlock("div", {
          key: 0,
          disabled: _ctx.disabledMinus || arrivalMin.value || _ctx.disabled || null,
          class: normalizeClass(["mvi-stepper-minus", minusClass.value]),
          onClick: doMinus
        }, [
          createVNode(unref(Icon), { type: "minus" })
        ], 10, _hoisted_1$b)) : createCommentVNode("", true),
        _ctx.showInput ? (openBlock(), createElementBlock("div", {
          key: 1,
          disabled: _ctx.disabled || _ctx.disabledInput || null,
          class: normalizeClass(["mvi-stepper-input", { border: _ctx.border }]),
          style: normalizeStyle({ width: _ctx.inputWidth || "" })
        }, [
          withDirectives(createElementVNode("input", {
            ref_key: "inputRef",
            ref: inputRef,
            "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => realValue.value = $event),
            disabled: _ctx.disabled || _ctx.disabledInput,
            type: "text",
            onBlur: changeValue,
            onKeyup: withKeys(changeValue, ["enter"]),
            style: normalizeStyle({ textAlign: _ctx.inputAlign }),
            inputmode: "numeric"
          }, null, 44, _hoisted_3$8), [
            [vModelText, realValue.value]
          ])
        ], 14, _hoisted_2$9)) : createCommentVNode("", true),
        _ctx.showPlus ? (openBlock(), createElementBlock("div", {
          key: 2,
          disabled: _ctx.disabledPlus || arrivalMax.value || _ctx.disabled || null,
          class: normalizeClass(["mvi-stepper-plus", plusClass.value]),
          onClick: doPlus
        }, [
          createVNode(unref(Icon), { type: "plus" })
        ], 10, _hoisted_4$6)) : createCommentVNode("", true)
      ], 2);
    };
  }
});
const stepper = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["__scopeId", "data-v-0fc74a32"]]);
const Stepper = withInstall(stepper);
const NumberKeyboardProps = {
  //是否显示小数点
  showDecimal: {
    type: Boolean,
    default: true
  },
  //是否显示删除按钮
  showDelete: {
    type: Boolean,
    default: true
  },
  //是否显示完成按钮
  showComplete: {
    type: Boolean,
    default: true
  },
  //是否显示键盘
  show: {
    type: Boolean,
    default: false
  },
  //当前输入的值
  modelValue: {
    type: [String, Number],
    default: ""
  },
  //zIndex
  zIndex: {
    type: Number,
    default: 850
  },
  //动画时长
  timeout: {
    type: Number,
    default: 200
  },
  //点击背景是否可关闭
  closable: {
    type: Boolean,
    default: false
  },
  //输入值最大长度
  maxlength: {
    type: Number,
    default: -1
  },
  //删除按钮文字
  deleteText: {
    type: String,
    default: "删除"
  },
  //完成按钮文字
  completeText: {
    type: String,
    default: "完成"
  },
  //空值时完成按钮是否可点击
  promiseEmpty: {
    type: Boolean,
    default: false
  },
  //是否显示点击态
  active: {
    type: Boolean,
    default: true
  },
  //挂载元素
  mountEl: {
    type: String,
    default: null
  },
  //遮罩层颜色
  overlayColor: {
    type: String,
    default: "rgba(0,10,20,0.2)"
  },
  //是否考虑滚动条
  usePadding: {
    type: Boolean,
    default: false
  },
  //是否进行数字校准
  calibration: {
    type: Boolean,
    default: false
  },
  //是否为身份证输入键盘
  showX: {
    type: Boolean,
    default: false
  },
  //是否随即键盘
  random: {
    type: Boolean,
    default: false
  },
  //标题
  title: {
    type: String,
    default: null
  },
  //是否显示边框
  border: {
    type: Boolean,
    default: false
  }
};
const _hoisted_1$a = {
  key: 0,
  class: "mvi-number-keyboard-title"
};
const _hoisted_2$8 = { key: 1 };
const _hoisted_3$7 = { class: "mvi-number-keyboard-left" };
const _hoisted_4$5 = ["onClick"];
const _hoisted_5$3 = {
  key: 0,
  class: "mvi-number-keyboard-right"
};
const _hoisted_6$3 = ["disabled"];
const _hoisted_7$3 = ["textContent"];
const _hoisted_8$2 = ["disabled"];
const _hoisted_9$1 = ["textContent"];
const _sfc_main$e = /* @__PURE__ */ defineComponent({
  ...{
    inheritAttrs: false,
    name: "m-number-keyboard"
  },
  __name: "number-keyboard",
  props: NumberKeyboardProps,
  emits: ["update:modelValue", "update:show", "input", "delete", "complete", "show", "showing", "shown", "hide", "hidding", "hidden"],
  setup(__props, { expose: __expose, emit: __emit }) {
    const instance = getCurrentInstance();
    const props = __props;
    const emits = __emit;
    const firstShow = ref(false);
    const keyboardShow = ref(false);
    const numbers = ref(["1", "2", "3", "4", "5", "6", "7", "8", "9", "X", ".", "0"]);
    const oldNumbers = ref([]);
    const overlayRef = ref(null);
    const keyboardRef = ref(null);
    const $$el = computed(() => {
      return overlayRef.value ? overlayRef.value.$$el : null;
    });
    const cmpShow = computed({
      set(value) {
        emits("update:show", value);
      },
      get() {
        return props.show;
      }
    });
    const cmpValue = computed({
      set(value) {
        emits("update:modelValue", value);
      },
      get() {
        if (obj.number.isNumber(props.modelValue)) {
          return props.modelValue.toString();
        }
        return props.modelValue;
      }
    });
    const boardStyle = computed(() => {
      return {
        transition: "all " + props.timeout + "ms",
        zIndex: props.zIndex + 10
      };
    });
    const deleteDisabeld = computed(() => {
      if (props.modelValue === "") {
        return true;
      }
      return false;
    });
    const completeDisabled = computed(() => {
      if (props.modelValue === "") {
        return true;
      }
      return false;
    });
    const cpmNumbers = computed(() => {
      let _numbers = numbers.value.filter((item) => {
        return showKeyBoard.value(item);
      });
      if (props.random) {
        if (props.show) {
          let arr = [];
          let length = _numbers.length;
          for (let i = 0; i < length; i++) {
            arr.push(getRandomNumber(arr));
          }
          oldNumbers.value = [...arr];
          return arr;
        }
        return oldNumbers.value;
      }
      return _numbers;
    });
    const leftNumberClass = computed(() => {
      return (_item, index) => {
        let cls = [];
        if (index == cpmNumbers.value.length - 1) {
          if (props.showX || props.showDecimal) {
            cls.push("half");
          } else {
            cls.push("full");
          }
        }
        if (props.border) {
          cls.push("border");
        }
        return cls;
      };
    });
    const showKeyBoard = computed(() => {
      return (item) => {
        if (item == "X") {
          return props.showX;
        }
        if (item == ".") {
          return props.showDecimal && !props.showX;
        }
        return true;
      };
    });
    const getRandomNumber = (arr) => {
      let _numbers = numbers.value.filter((item) => {
        return showKeyBoard.value(item);
      });
      let index = Math.floor(Math.random() * _numbers.length);
      if (arr.includes(_numbers[index])) {
        return getRandomNumber(arr);
      }
      return _numbers[index];
    };
    const overlayShow = () => {
      if (!firstShow.value) {
        firstShow.value = true;
      }
      keyboardShow.value = true;
    };
    const overlayHide = () => {
      keyboardShow.value = false;
    };
    const numberClick = (item) => {
      if (cmpValue.value.length >= props.maxlength && props.maxlength > 0) {
        return;
      }
      cmpValue.value += item;
      emits("input", item);
    };
    const deleteClick = () => {
      if (deleteDisabeld.value) {
        return;
      }
      let value = obj.string.delete(cmpValue.value, cmpValue.value.length - 1, 1);
      cmpValue.value = value;
      emits("delete", value);
    };
    const completeClick = () => {
      if (completeDisabled.value && !props.promiseEmpty) {
        return;
      }
      if (props.calibration) {
        cmpValue.value = parseFloat(cmpValue.value) + "" || "";
      }
      emits("complete", cmpValue.value);
      cmpShow.value = false;
    };
    const beforeEnter = (el) => {
      if (obj.data.get(el, "mvi-keyboard-beforeEnter-trigger")) {
        return;
      }
      obj.data.set(el, "mvi-keyboard-beforeEnter-trigger", true);
      emits("show", el);
      if (typeof instance.appContext.config.globalProperties.keyboardComponentWatch == "function") {
        instance.appContext.config.globalProperties.keyboardComponentWatch.apply(instance.proxy, ["show", el]);
      }
    };
    const enter = (el) => {
      if (obj.data.get(el, "mvi-keyboard-enter-trigger")) {
        return;
      }
      obj.data.set(el, "mvi-keyboard-enter-trigger", true);
      emits("showing", el);
      if (typeof instance.appContext.config.globalProperties.keyboardComponentWatch == "function") {
        instance.appContext.config.globalProperties.keyboardComponentWatch.apply(instance.proxy, ["showing", el]);
      }
    };
    const afterEnter = (el) => {
      emits("shown", el);
      if (typeof instance.appContext.config.globalProperties.keyboardComponentWatch == "function") {
        instance.appContext.config.globalProperties.keyboardComponentWatch.apply(instance.proxy, ["shown", el]);
      }
    };
    const beforeLeave = (el) => {
      obj.data.remove(el, "mvi-keyboard-beforeEnter-trigger");
      obj.data.remove(el, "mvi-keyboard-enter-trigger");
      emits("hide", el);
      if (typeof instance.appContext.config.globalProperties.keyboardComponentWatch == "function") {
        instance.appContext.config.globalProperties.keyboardComponentWatch.apply(instance.proxy, ["hide", el]);
      }
    };
    const leave = (el) => {
      emits("hidding", el);
      if (typeof instance.appContext.config.globalProperties.keyboardComponentWatch == "function") {
        instance.appContext.config.globalProperties.keyboardComponentWatch.apply(instance.proxy, ["hidding", el]);
      }
    };
    const afterLeave = (el) => {
      emits("hidden", el);
      if (typeof instance.appContext.config.globalProperties.keyboardComponentWatch == "function") {
        instance.appContext.config.globalProperties.keyboardComponentWatch.apply(instance.proxy, ["hidden", el]);
      }
    };
    __expose({
      $$el
    });
    return (_ctx, _cache) => {
      return openBlock(), createBlock(unref(Overlay), {
        ref_key: "overlayRef",
        ref: overlayRef,
        modelValue: cmpShow.value,
        "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => cmpShow.value = $event),
        onShow: overlayShow,
        onHide: overlayHide,
        "z-index": _ctx.zIndex,
        color: _ctx.overlayColor,
        closable: _ctx.closable,
        timeout: _ctx.timeout,
        "mount-el": _ctx.mountEl,
        "use-padding": _ctx.usePadding
      }, {
        default: withCtx(() => [
          createVNode(Transition, {
            name: "mvi-keyboard",
            onBeforeEnter: beforeEnter,
            onAfterEnter: afterEnter,
            onBeforeLeave: beforeLeave,
            onAfterLeave: afterLeave,
            onLeave: leave,
            onEnter: enter
          }, {
            default: withCtx(() => [
              firstShow.value ? withDirectives((openBlock(), createElementBlock("div", mergeProps({
                key: 0,
                ref_key: "keyboardRef",
                ref: keyboardRef,
                class: "mvi-number-keyboard",
                style: boardStyle.value
              }, _ctx.$attrs), [
                !_ctx.border && (_ctx.title || _ctx.$slots.title) ? (openBlock(), createElementBlock("div", _hoisted_1$a, [
                  _ctx.$slots.title ? renderSlot(_ctx.$slots, "default", { key: 0 }, void 0, true) : (openBlock(), createElementBlock("span", _hoisted_2$8, toDisplayString(_ctx.title), 1))
                ])) : createCommentVNode("", true),
                createElementVNode("div", {
                  class: normalizeClass(["mvi-number-keyboard-wrapper", _ctx.border ? "" : "border"])
                }, [
                  createElementVNode("div", _hoisted_3$7, [
                    (openBlock(true), createElementBlock(Fragment, null, renderList(cpmNumbers.value, (item, index) => {
                      return openBlock(), createElementBlock("div", {
                        class: normalizeClass(["mvi-number-keyboard-left-number", leftNumberClass.value(item, index)])
                      }, [
                        createElementVNode("div", {
                          onClick: ($event) => numberClick(item),
                          class: normalizeClass(["mvi-number-keyboard-left-number-el", { active: _ctx.active }])
                        }, toDisplayString(item), 11, _hoisted_4$5)
                      ], 2);
                    }), 256))
                  ]),
                  _ctx.showComplete || _ctx.showDelete ? (openBlock(), createElementBlock("div", _hoisted_5$3, [
                    _ctx.showDelete ? (openBlock(), createElementBlock("div", {
                      key: 0,
                      class: normalizeClass(["mvi-number-keyboard-delete", { border: _ctx.border }])
                    }, [
                      createElementVNode("div", {
                        disabled: deleteDisabeld.value || null,
                        class: normalizeClass(["mvi-number-keyboard-delete-el", { active: _ctx.active && !deleteDisabeld.value }]),
                        onClick: deleteClick
                      }, [
                        _ctx.$slots.delete ? renderSlot(_ctx.$slots, "delete", { key: 0 }, void 0, true) : (openBlock(), createElementBlock("span", {
                          key: 1,
                          textContent: toDisplayString(_ctx.deleteText)
                        }, null, 8, _hoisted_7$3))
                      ], 10, _hoisted_6$3)
                    ], 2)) : createCommentVNode("", true),
                    _ctx.showComplete ? (openBlock(), createElementBlock("div", {
                      key: 1,
                      class: normalizeClass(["mvi-number-keyboard-complete", { border: _ctx.border }])
                    }, [
                      createElementVNode("div", {
                        disabled: _ctx.promiseEmpty ? null : completeDisabled.value || null,
                        class: normalizeClass(["mvi-number-keyboard-complete-el", { active: _ctx.active && !(_ctx.promiseEmpty ? false : completeDisabled.value) }]),
                        onClick: completeClick
                      }, [
                        _ctx.$slots.complete ? renderSlot(_ctx.$slots, "complete", { key: 0 }, void 0, true) : createCommentVNode("", true),
                        createElementVNode("span", {
                          textContent: toDisplayString(_ctx.completeText)
                        }, null, 8, _hoisted_9$1)
                      ], 10, _hoisted_8$2)
                    ], 2)) : createCommentVNode("", true)
                  ])) : createCommentVNode("", true)
                ], 2)
              ], 16)), [
                [vShow, keyboardShow.value]
              ]) : createCommentVNode("", true)
            ]),
            _: 3
          })
        ]),
        _: 3
      }, 8, ["modelValue", "z-index", "color", "closable", "timeout", "mount-el", "use-padding"]);
    };
  }
});
const numberKeyboard = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["__scopeId", "data-v-2886d8dc"]]);
const NumberKeyboard = withInstall(numberKeyboard);
const ToastProps = {
  //弹窗类型，取值为success/error/loading/info
  type: {
    type: String,
    default: null
  },
  //显示文本
  message: {
    type: String,
    default: null
  },
  //弹窗自动关闭的时间，默认不自动关闭
  timeout: {
    type: Number,
    default: null
  },
  //遮罩层背景色
  overlayColor: {
    type: String,
    default: null
  },
  //弹窗背景色
  background: {
    type: String,
    default: null
  },
  //弹窗字体颜色
  color: {
    type: String,
    default: null
  },
  //遮罩层z-index
  zIndex: {
    type: Number,
    default: null
  },
  //是否考虑滚动条
  usePadding: {
    type: Boolean,
    default: null
  },
  //自定义显示的图标
  icon: {
    type: [String, Object],
    default: null
  },
  //挂载元素
  mountEl: {
    type: String,
    default: null
  },
  //是否显示阴影
  shadow: {
    type: Boolean,
    default: null
  },
  //弹窗移除方法
  __remove: {
    type: Function,
    default: function() {
      return function() {
      };
    }
  },
  //弹窗初始化方法
  __init: {
    type: Function,
    default: function() {
      return function() {
      };
    }
  }
};
const _hoisted_1$9 = { class: "mvi-toast-icon" };
const _hoisted_2$7 = ["innerHTML"];
const _sfc_main$d = /* @__PURE__ */ defineComponent({
  ...{
    inheritAttrs: false,
    name: "m-toast"
  },
  __name: "toast",
  props: ToastProps,
  setup(__props, { expose: __expose }) {
    const instance = getCurrentInstance();
    const props = __props;
    const show = ref(true);
    const timer = ref(null);
    const overlayRef = ref(null);
    const $$el = computed(() => {
      return overlayRef.value ? overlayRef.value.$$el : null;
    });
    const cmpUsePadding = computed(() => {
      if (typeof props.usePadding == "boolean") {
        return props.usePadding;
      }
      return false;
    });
    const cmpType = computed(() => {
      if (["success", "error", "loading", "info"].includes(props.type)) {
        return props.type;
      }
      return "info";
    });
    const defaultIconType = computed(() => {
      if (cmpType.value == "success") {
        return "success";
      }
      if (cmpType.value == "error") {
        return "error-o";
      }
      if (cmpType.value == "info") {
        return "info-o";
      }
      return "";
    });
    const cmpIcon = computed(() => {
      let icon2 = {
        type: defaultIconType.value,
        url: "",
        spin: false,
        size: "0.72rem",
        color: ""
      };
      if (typeof props.icon == "string" && props.icon) {
        icon2.type = props.icon;
      } else if (obj.common.isObject(props.icon)) {
        if (typeof props.icon.type == "string" && props.icon.type) {
          icon2.type = props.icon.type;
        }
        if (typeof props.icon.url == "string" && props.icon.url) {
          icon2.url = props.icon.url;
        }
        if (typeof props.icon.spin == "boolean") {
          icon2.spin = props.icon.spin;
        }
        if (typeof props.icon.size == "string" && props.icon.size) {
          icon2.size = props.icon.size;
        }
        if (typeof props.icon.color == "string" && props.icon.color) {
          icon2.color = props.icon.color;
        }
      }
      return icon2;
    });
    const cmpMessage = computed(() => {
      if (typeof props.message == "string" && props.message) {
        return props.message;
      }
      if (obj.common.isObject(props.message)) {
        return JSON.stringify(props.message);
      }
      if (props.message == void 0 || props.message == null) {
        return "";
      }
      return String(props.message);
    });
    const cmpTimeout = computed(() => {
      if (obj.number.isNumber(props.timeout) && props.timeout > 0) {
        return props.timeout;
      }
      return 0;
    });
    const cmpZIndex = computed(() => {
      if (obj.number.isNumber(props.zIndex)) {
        return props.zIndex;
      }
      return 1100;
    });
    const cmpOverlayColor = computed(() => {
      if (typeof props.overlayColor == "string" && props.overlayColor) {
        return props.overlayColor;
      }
      return "rgba(0, 10, 20, .05)";
    });
    const cmpBackground = computed(() => {
      if (typeof props.background == "string" && props.background) {
        return props.background;
      }
      return "";
    });
    const cmpColor = computed(() => {
      if (typeof props.color == "string" && props.color) {
        return props.color;
      }
      return "#fff";
    });
    const cmpMountEl = computed(() => {
      if (typeof props.mountEl == "string" && props.mountEl) {
        return props.mountEl;
      }
      return "body";
    });
    const cmpShadow = computed(() => {
      if (typeof props.shadow == "boolean") {
        return props.shadow;
      }
      return true;
    });
    const toastStyle = computed(() => {
      let style = {
        zIndex: cmpZIndex.value
      };
      if (cmpBackground.value) {
        style.backgroundColor = cmpBackground.value;
      }
      if (cmpColor.value) {
        style.color = cmpColor.value;
      }
      return style;
    });
    const clearTimer = () => {
      if (timer.value) {
        clearTimeout(timer.value);
        timer.value = null;
      }
    };
    const toastShown = () => {
      if (cmpTimeout.value > 0) {
        timer.value = setTimeout(() => {
          show.value = false;
        }, cmpTimeout.value);
      }
    };
    const toastHidden = () => {
      clearTimer();
      props.__remove();
    };
    onMounted(() => {
      props.__init(instance);
    });
    __expose({
      $$el,
      show
    });
    return (_ctx, _cache) => {
      return openBlock(), createBlock(unref(Overlay), {
        ref_key: "overlayRef",
        ref: overlayRef,
        color: cmpOverlayColor.value,
        onHidden: toastHidden,
        modelValue: show.value,
        "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => show.value = $event),
        "use-padding": cmpUsePadding.value,
        zIndex: cmpZIndex.value,
        fade: "",
        "mount-el": cmpMountEl.value,
        onShown: toastShown
      }, {
        default: withCtx(() => [
          createElementVNode("div", mergeProps({
            class: ["mvi-toast", { iconless: cmpMessage.value, shadow: cmpShadow.value }],
            style: toastStyle.value
          }, _ctx.$attrs), [
            createElementVNode("div", _hoisted_1$9, [
              cmpType.value == "loading" && !cmpIcon.value.type && !cmpIcon.value.url ? (openBlock(), createBlock(unref(Loading), {
                key: 0,
                color: cmpColor.value,
                size: cmpIcon.value.size
              }, null, 8, ["color", "size"])) : (openBlock(), createBlock(unref(Icon), {
                key: 1,
                type: cmpIcon.value.type,
                url: cmpIcon.value.url,
                spin: cmpIcon.value.spin,
                size: cmpIcon.value.size,
                color: cmpIcon.value.color
              }, null, 8, ["type", "url", "spin", "size", "color"]))
            ]),
            cmpMessage.value ? (openBlock(), createElementBlock("div", {
              key: 0,
              class: "mvi-toast-message",
              innerHTML: cmpMessage.value
            }, null, 8, _hoisted_2$7)) : createCommentVNode("", true)
          ], 16)
        ]),
        _: 1
      }, 8, ["color", "modelValue", "use-padding", "zIndex", "mount-el"]);
    };
  }
});
const ToastComponent = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["__scopeId", "data-v-6656d407"]]);
const Toast = {
  //初始化参数
  initParams: (options) => {
    let opts = {};
    if (obj.common.isObject(options)) {
      opts.type = options.type;
      opts.message = options.message;
      opts.timeout = options.timeout;
      opts.overlayColor = options.overlayColor;
      opts.background = options.background;
      opts.color = options.color;
      opts.zIndex = options.zIndex;
      opts.usePadding = options.usePadding;
      opts.icon = options.icon;
      opts.mountEl = options.mountEl;
      opts.shadow = options.shadow;
    } else {
      opts.message = options;
      opts.timeout = 1500;
    }
    return opts;
  },
  install: (app) => {
    app.config.globalProperties.$showToast = Toast.showToast;
    app.provide("$showToast", Toast.showToast);
    app.config.globalProperties.$hideToast = Toast.hideToast;
    app.provide("$hideToast", Toast.hideToast);
  },
  //显示toast
  showToast: (options) => {
    return new Promise((resolve) => {
      if (Toast.$el && Toast.$instance) {
        Toast.$instance.unmount();
        Toast.$el.remove();
      }
      let opts = Toast.initParams(options);
      let mountNode = obj.element.string2dom("<div></div>");
      document.body.appendChild(mountNode);
      const instance = createApp(ToastComponent, {
        ...opts,
        __init: (vm) => {
          Toast.$vm = vm;
        },
        __remove: () => {
          instance.unmount();
          mountNode.remove();
          resolve();
        }
      });
      instance.mount(mountNode);
      Toast.$el = mountNode;
      Toast.$instance = instance;
    });
  },
  //关闭Toast
  hideToast: () => {
    if (Toast.$vm) {
      Toast.$vm.exposed.show.value = false;
    }
  }
};
const PullRefreshProps = {
  //下拉文案
  pullingText: {
    type: String,
    default: "下拉刷新"
  },
  //释放文案
  loosingText: {
    type: String,
    default: "释放刷新"
  },
  //刷新时显示的文本
  loadingText: {
    type: String,
    default: "正在刷新"
  },
  //是否刷新
  modelValue: {
    type: Boolean,
    default: false
  },
  //下拉图标
  pullingIcon: {
    type: [String, Object],
    default: "arrow-down"
  },
  //释放图标
  loosingIcon: {
    type: [String, Object],
    default: "arrow-up"
  },
  //刷新图标
  loadingIcon: {
    type: [String, Object],
    default: function() {
      return {
        type: "load-e",
        spin: true
      };
    }
  },
  //是否禁用
  disabled: {
    type: Boolean,
    default: false
  },
  //下拉触发刷新的距离值
  distance: {
    type: Number,
    default: 1.4
  }
};
const _hoisted_1$8 = ["textContent"];
const _sfc_main$c = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-pull-refresh"
  },
  __name: "pull-refresh",
  props: PullRefreshProps,
  emits: ["update:modelValue", "refresh"],
  setup(__props, { emit: __emit }) {
    const instance = getCurrentInstance();
    const props = __props;
    const emits = __emit;
    const elHeight = ref(0);
    const rootHeight = ref(0);
    const amount = ref(0);
    const amountMax = ref(4);
    const startY = ref(0);
    const firstStartY = ref(0);
    const status = ref(0);
    const translateY = ref(0);
    const hasTouch = ref(false);
    const mouseDown = ref(false);
    const disableScroll = ref(false);
    const containerRef = ref(null);
    const elRef = ref(null);
    const refreshRef = ref(null);
    const wrapperRef = ref(null);
    const containerStyle = computed(() => {
      let style = {
        height: `calc(100% + ${elHeight.value}px)`,
        transform: `translateY(${translateY.value}px)`
      };
      return style;
    });
    const wrapperStyle = computed(() => {
      let style = {
        height: rootHeight.value + "px"
      };
      if (disableScroll.value) {
        style.overflowY = "hidden";
      }
      return style;
    });
    const parseIcon = computed(() => {
      return (params) => {
        let icon22 = {
          spin: false,
          type: "",
          url: "",
          color: "",
          size: ""
        };
        if (obj.common.isObject(params)) {
          if (typeof params.spin == "boolean") {
            icon22.spin = params.spin;
          }
          if (typeof params.type == "string") {
            icon22.type = params.type;
          }
          if (typeof params.url == "string") {
            icon22.url = params.url;
          }
          if (typeof params.color == "string") {
            icon22.color = params.color;
          }
          if (typeof params.size == "string") {
            icon22.size = params.size;
          }
        } else if (typeof params == "string") {
          icon22.type = params;
        }
        return icon22;
      };
    });
    const icon2 = computed(() => {
      if (status.value == 0) {
        return parseIcon.value(props.pullingIcon);
      }
      if (status.value == 1) {
        return parseIcon.value(props.loosingIcon);
      }
      return parseIcon.value(props.loadingIcon);
    });
    const message = computed(() => {
      if (status.value == 0) {
        return props.pullingText;
      }
      if (status.value == 1) {
        return props.loosingText;
      }
      return props.loadingText;
    });
    const initHeight = () => {
      elHeight.value = refreshRef.value.offsetHeight;
      rootHeight.value = elRef.value.offsetHeight;
      translateY.value = -elHeight.value;
    };
    const getScrollEl = (el) => {
      if (el.isEqualNode(wrapperRef.value) || !obj.element.isContains(wrapperRef.value, el)) {
        return wrapperRef.value;
      }
      if (obj.element.getScrollHeight(el) > el.clientHeight) {
        return el;
      }
      return getScrollEl(el.parentNode);
    };
    const changeStatus = () => {
      if (props.disabled) {
        return;
      }
      if (props.modelValue) {
        status.value = 2;
        disableScroll.value = true;
        emits("refresh");
        if (!hasTouch.value) {
          containerRef.value.style.transition = "transform 300ms";
          containerRef.value.offsetWidth;
          translateY.value = obj.element.rem2px(props.distance) - elHeight.value;
          setTimeout(() => {
            if (containerRef.value) {
              containerRef.value.style.transition = "";
            }
          }, 300);
        }
      } else {
        amount.value = 0;
        hasTouch.value = false;
        containerRef.value.style.transition = "transform 300ms";
        containerRef.value.offsetWidth;
        translateY.value = -elHeight.value;
        setTimeout(() => {
          if (containerRef.value) {
            containerRef.value.style.transition = "";
          }
          status.value = 0;
          disableScroll.value = false;
        }, 300);
      }
    };
    const startPull = (event2) => {
      if (props.disabled) {
        return;
      }
      if (status.value == 0) {
        startY.value = event2.targetTouches[0].pageY;
        firstStartY.value = startY.value;
      }
    };
    const startPull2 = (event2) => {
      if (props.disabled) {
        return;
      }
      if (status.value == 0) {
        mouseDown.value = true;
        startY.value = event2.pageY;
        firstStartY.value = startY.value;
      }
    };
    const onPull = (event2) => {
      if (props.disabled) {
        return;
      }
      if (status.value == 2) {
        return;
      }
      let endY = event2.targetTouches[0].pageY;
      let move = endY - startY.value;
      let totalMove = endY - firstStartY.value;
      startY.value = endY;
      if (totalMove <= 0) {
        firstStartY.value = startY.value;
        return;
      }
      if (obj.element.getScrollTop(wrapperRef.value) > 0) {
        firstStartY.value = startY.value;
        return;
      }
      let el = getScrollEl(event2.target);
      if (!el.isEqualNode(wrapperRef.value) && obj.element.getScrollTop(el) > 0) {
        firstStartY.value = startY.value;
        return;
      }
      hasTouch.value = true;
      if (event2.cancelable) {
        event2.preventDefault();
      }
      if (amount.value < amountMax.value) {
        amount.value++;
      }
      let y = translateY.value + move / amount.value;
      if (y > obj.element.rem2px(props.distance) - elHeight.value) {
        status.value = 1;
      } else {
        status.value = 0;
      }
      translateY.value = y;
    };
    const onPull2 = (event2) => {
      if (!mouseDown.value || props.disabled) {
        return;
      }
      if (status.value == 2) {
        return;
      }
      let endY = event2.pageY;
      let move = endY - startY.value;
      let totalMove = endY - firstStartY.value;
      startY.value = endY;
      if (totalMove <= 0) {
        firstStartY.value = startY.value;
        return;
      }
      if (obj.element.getScrollTop(wrapperRef.value) > 0) {
        firstStartY.value = startY.value;
        return;
      }
      let el = getScrollEl(event2.target);
      if (!el.isEqualNode(wrapperRef.value) && obj.element.getScrollTop(el) > 0) {
        firstStartY.value = startY.value;
        return;
      }
      hasTouch.value = true;
      if (event2.cancelable) {
        event2.preventDefault();
      }
      if (amount.value < amountMax.value) {
        amount.value++;
      }
      let y = translateY.value + move / amount.value;
      if (y > obj.element.rem2px(props.distance) - elHeight.value) {
        status.value = 1;
      } else {
        status.value = 0;
      }
      translateY.value = y;
    };
    const pulled = () => {
      if (props.disabled) {
        return;
      }
      if (status.value == 1 && props.modelValue == false) {
        emits("update:modelValue", true);
      } else if (status.value == 0) {
        changeStatus();
      }
    };
    const pulled2 = () => {
      if (!mouseDown.value || props.disabled) {
        return;
      }
      mouseDown.value = false;
      if (status.value == 1 && props.modelValue === false) {
        emits("update:modelValue", true);
      } else if (status.value == 0) {
        changeStatus();
      }
    };
    watch(
      () => props.modelValue,
      () => {
        changeStatus();
      }
    );
    onMounted(() => {
      nextTick(() => {
        initHeight();
        obj.event.on(document.documentElement, `mousemove.pullRefresh_${instance.uid}`, onPull2);
        obj.event.on(document.documentElement, `mouseup.pullRefresh_${instance.uid}`, pulled2);
      });
    });
    onBeforeUnmount(() => {
      obj.event.off(document.documentElement, `mousemove.pullRefresh_${instance.uid} mouseup.pullRefresh_${instance.uid}`);
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: "mvi-pull-refresh",
        ref_key: "elRef",
        ref: elRef
      }, [
        createElementVNode("div", {
          ref_key: "containerRef",
          ref: containerRef,
          class: "mvi-pull-refresh-container",
          style: normalizeStyle(containerStyle.value)
        }, [
          createElementVNode("div", {
            ref_key: "refreshRef",
            ref: refreshRef,
            class: "mvi-pull-refresh-el"
          }, [
            _ctx.$slots.el ? renderSlot(_ctx.$slots, "el", {
              key: 0,
              status: status.value
            }, void 0, true) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
              createVNode(unref(Icon), {
                type: icon2.value.type,
                spin: icon2.value.spin,
                url: icon2.value.url,
                size: icon2.value.size,
                color: icon2.value.color
              }, null, 8, ["type", "spin", "url", "size", "color"]),
              createElementVNode("span", {
                class: "mvi-pull-refresh-text",
                textContent: toDisplayString(message.value)
              }, null, 8, _hoisted_1$8)
            ], 64))
          ], 512),
          createElementVNode("div", {
            ref_key: "wrapperRef",
            ref: wrapperRef,
            class: "mvi-pull-refresh-wrapper",
            onTouchstart: startPull,
            onTouchmove: onPull,
            onTouchend: pulled,
            onMousedown: startPull2,
            style: normalizeStyle(wrapperStyle.value)
          }, [
            renderSlot(_ctx.$slots, "default", {}, void 0, true)
          ], 36)
        ], 4)
      ], 512);
    };
  }
});
const pullRefresh = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["__scopeId", "data-v-827c0a7d"]]);
const PullRefresh = withInstall(pullRefresh);
const DialogProps = {
  //弹窗类型
  type: {
    type: String,
    default: null
  },
  //标题
  title: {
    type: String,
    default: null
  },
  //描述
  message: {
    default: ""
  },
  //宽度
  width: {
    type: String,
    default: null
  },
  //遮罩z-index
  zIndex: {
    type: Number,
    default: null
  },
  //动画
  animation: {
    type: String,
    default: null
  },
  //圆角
  radius: {
    type: String,
    default: null
  },
  //遮罩层颜色
  overlayColor: {
    type: String,
    default: null
  },
  //是否点击遮罩可关闭
  closable: {
    type: Boolean,
    default: null
  },
  //输入框配置
  input: {
    type: Object,
    default: null
  },
  //滚动条考虑
  usePadding: {
    type: Boolean,
    default: null
  },
  //按钮文本
  btnText: {
    type: [String, Array],
    default: null
  },
  //按钮颜色
  btnColor: {
    type: [String, Array],
    default: null
  },
  //是否ios风格
  ios: {
    type: Boolean,
    default: null
  },
  //挂载元素
  mountEl: {
    type: String,
    default: null
  },
  //动画时长
  timeout: {
    type: Number,
    default: null
  },
  //弹窗移除方法
  __remove: {
    type: Function,
    default: function() {
      return function() {
      };
    }
  }
};
const DialogPcProps = {
  //弹窗类型
  type: {
    type: String,
    default: null
  },
  //标题
  title: {
    type: String,
    default: null
  },
  //描述
  message: {
    default: ""
  },
  //宽度
  width: {
    type: String,
    default: null
  },
  //遮罩层z-index
  zIndex: {
    type: Number,
    default: null
  },
  //动画
  animation: {
    type: String,
    default: null
  },
  //圆角
  radius: {
    type: String,
    default: null
  },
  //遮罩层颜色
  overlayColor: {
    type: String,
    default: null
  },
  //是否点击遮罩可关闭
  closable: {
    type: Boolean,
    default: null
  },
  //输入框配置
  input: {
    type: Object,
    default: null
  },
  //是否居中
  center: {
    type: Boolean,
    default: false
  },
  //滚动条考虑
  usePadding: {
    type: Boolean,
    default: null
  },
  //按钮配置
  btns: {
    type: Object,
    default: null
  },
  //关闭按钮是否显示
  showTimes: {
    type: Boolean,
    default: null
  },
  //挂载元素
  mountEl: {
    type: String,
    default: null
  },
  //动画时长
  timeout: {
    type: Number,
    default: null
  },
  //弹窗移除方法
  __remove: {
    type: Function,
    default: function() {
      return function() {
      };
    }
  }
};
const _hoisted_1$7 = ["innerHTML"];
const _hoisted_2$6 = ["innerHTML"];
const _hoisted_3$6 = ["innerHTML"];
const _hoisted_4$4 = ["type", "placeholder", "maxlength", "inputmode"];
const _hoisted_5$2 = { class: "mvi-dialog-footer" };
const _hoisted_6$2 = ["textContent"];
const _hoisted_7$2 = ["textContent"];
const _sfc_main$b = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-dialog"
  },
  __name: "dialog",
  props: DialogProps,
  setup(__props, { expose: __expose }) {
    const instance = getCurrentInstance();
    const props = __props;
    const ok = ref(false);
    const show = ref(true);
    const focus = ref(false);
    const value = ref("");
    const modalRef = ref(null);
    const inputRef = ref(null);
    const $$el = computed(() => {
      return modalRef.value ? modalRef.value.$$el : null;
    });
    const cmpTitle = computed(() => {
      if (typeof props.title == "string") {
        return props.title;
      }
      return "提示";
    });
    const cmpMessage = computed(() => {
      if (typeof props.message == "string") {
        return props.message;
      }
      if (obj.common.isObject(props.message)) {
        return JSON.stringify(props.message);
      }
      return String(props.message);
    });
    const cmpBtnText = computed(() => {
      let bt = "";
      if (props.type == "alert") {
        if (typeof props.btnText == "string") {
          bt = props.btnText;
        } else {
          bt = "确定";
        }
      } else {
        bt = [];
        if (props.btnText instanceof Array) {
          if (typeof props.btnText[0] == "string") {
            bt[0] = props.btnText[0];
          } else {
            bt[0] = "确定";
          }
          if (typeof props.btnText[1] == "string") {
            bt[1] = props.btnText[1];
          } else {
            bt[1] = "取消";
          }
        } else {
          bt = ["确定", "取消"];
        }
      }
      return bt;
    });
    const cmpBtnColor = computed(() => {
      let bt = "";
      if (props.type == "alert") {
        if (typeof props.btnColor == "string") {
          bt = props.btnColor;
        } else {
          bt = "";
        }
      } else {
        bt = [];
        if (props.btnColor instanceof Array) {
          if (typeof props.btnColor[0] == "string") {
            bt[0] = props.btnColor[0];
          } else {
            bt[0] = "";
          }
          if (typeof props.btnColor[1] == "string") {
            bt[1] = props.btnColor[1];
          } else {
            bt[1] = "";
          }
        } else {
          bt = ["", ""];
        }
      }
      return bt;
    });
    const cmpWidth = computed(() => {
      if (typeof props.width == "string" && props.width) {
        return props.width;
      }
      return "5.6rem";
    });
    const cmpInput = computed(() => {
      let input2 = {
        placeholder: "",
        type: "text",
        autofocus: true,
        maxlength: -1,
        clearable: true,
        mode: "text",
        align: "left",
        value: ""
      };
      if (obj.common.isObject(props.input)) {
        if (typeof props.input.placeholder == "string") {
          input2.placeholder = props.input.placeholder;
        }
        if (typeof props.input.type == "string" && props.input.type) {
          input2.type = props.input.type;
        }
        if (typeof props.input.autofocus == "boolean") {
          input2.autofocus = props.input.autofocus;
        }
        if (obj.number.isNumber(props.input.maxlength)) {
          input2.maxlength = props.input.maxlength;
        }
        if (typeof props.input.clearable == "boolean") {
          input2.clearable = props.input.clearable;
        }
        if (typeof props.input.mode == "string") {
          input2.mode = props.input.mode;
        }
        if (typeof props.input.align == "string") {
          input2.align = props.input.align;
        }
        if (typeof props.input.value == "string" || obj.number.isNumber(props.input.value)) {
          input2.value = props.input.value.toString();
        }
      }
      return input2;
    });
    const cmpZIndex = computed(() => {
      if (obj.number.isNumber(props.zIndex)) {
        return props.zIndex;
      }
      return 1e3;
    });
    const cmpUsePadding = computed(() => {
      if (typeof props.usePadding == "boolean") {
        return props.usePadding;
      }
      return false;
    });
    const cmpAnimation = computed(() => {
      if (typeof props.animation == "string" && props.animation) {
        return props.animation;
      }
      return "narrow";
    });
    const cmpRadius = computed(() => {
      if (typeof props.radius == "string" && props.radius) {
        return props.radius;
      }
      return "0.2rem";
    });
    const cmpIos = computed(() => {
      if (typeof props.ios == "boolean") {
        return props.ios;
      }
      return false;
    });
    const cmpOverlayColor = computed(() => {
      if (typeof props.overlayColor == "string" && props.overlayColor) {
        return props.overlayColor;
      }
      if (cmpIos.value) {
        return "rgba(0,10,20,.3)";
      }
      return "";
    });
    const cmpMountEl = computed(() => {
      if (typeof props.mountEl == "string" && props.mountEl) {
        return props.mountEl;
      }
      return "body";
    });
    const cmpClosable = computed(() => {
      if (typeof props.closable == "boolean") {
        return props.closable;
      } else {
        return false;
      }
    });
    const cmpTimeout = computed(() => {
      if (obj.number.isNumber(props.timeout)) {
        return props.timeout;
      }
      return 200;
    });
    const contentShow = computed(() => {
      if (props.type == "alert" || props.type == "confirm") {
        if (cmpMessage.value && !cmpIos.value) {
          return true;
        }
        return false;
      }
      return true;
    });
    const showClear = computed(() => {
      return !!(focus.value && value.value);
    });
    const inputClass = computed(() => {
      let cls = [];
      if (showClear.value && cmpInput.value.clearable) {
        cls.push("mvi-dialog-input-padding");
      }
      return cls;
    });
    const inputMode = computed(() => {
      let mode = "text";
      if (["none", "text", "decimal", "numeric", "tel", "search", "email", "url"].includes(cmpInput.value.mode)) {
        mode = cmpInput.value.mode;
      }
      return mode;
    });
    const inputStyle = computed(() => {
      let style = {};
      if (["left", "right", "center"].includes(cmpInput.value.align)) {
        style.textAlign = cmpInput.value.align;
      }
      return style;
    });
    const overlayClick = (event2) => {
      if (!cmpClosable.value) {
        return;
      }
      if (event2.target != event2.currentTarget) {
        return;
      }
      show.value = false;
      ok.value = false;
    };
    const setDefaultValue = () => {
      let _value = cmpInput.value.value;
      if (cmpInput.value.type == "number") {
        _value = _value.replace(/\D/g, "");
      }
      if (cmpInput.value.maxlength > 0 && _value.length > cmpInput.value.maxlength) {
        _value = _value.substring(0, cmpInput.value.maxlength);
      }
      value.value = _value;
    };
    const inputFocus = () => {
      focus.value = true;
    };
    const inputBlur = () => {
      setTimeout(() => {
        focus.value = false;
      }, 200);
    };
    const inputFun = () => {
      let _value = value.value;
      if (cmpInput.value.type == "number") {
        _value = _value.replace(/\D/g, "");
      }
      if (cmpInput.value.maxlength > 0 && _value.length > cmpInput.value.maxlength) {
        _value = _value.substring(0, cmpInput.value.maxlength);
      }
      value.value = _value;
    };
    const doClear = () => {
      if (!cmpInput.value.clearable) {
        return;
      }
      setTimeout(() => {
        value.value = "";
        inputRef.value.focus();
      }, 210);
    };
    const okFun = () => {
      show.value = false;
      ok.value = true;
    };
    const cancelFun = () => {
      show.value = false;
      ok.value = false;
    };
    const modalHide = (el) => {
      if (typeof instance.appContext.config.globalProperties.dialogComponentWatch == "function") {
        instance.appContext.config.globalProperties.dialogComponentWatch.apply(instance.proxy, ["hide", props.type, el]);
      }
    };
    const modalHidding = (el) => {
      if (typeof instance.appContext.config.globalProperties.dialogComponentWatch == "function") {
        instance.appContext.config.globalProperties.dialogComponentWatch.apply(instance.proxy, ["hidding", props.type, el]);
      }
    };
    const modalHidden = (el) => {
      if (typeof instance.appContext.config.globalProperties.dialogComponentWatch == "function") {
        instance.appContext.config.globalProperties.dialogComponentWatch.apply(instance.proxy, ["hidden", props.type, el]);
      }
      if (props.type == "alert") {
        props.__remove();
      } else if (props.type == "confirm") {
        props.__remove(ok.value);
      } else if (props.type == "prompt") {
        props.__remove(ok.value, value.value);
      }
    };
    const modalShow = (el) => {
      if (typeof instance.appContext.config.globalProperties.dialogComponentWatch == "function") {
        instance.appContext.config.globalProperties.dialogComponentWatch.apply(instance.proxy, ["show", props.type, el]);
      }
    };
    const modalShowing = (el) => {
      if (typeof instance.appContext.config.globalProperties.dialogComponentWatch == "function") {
        instance.appContext.config.globalProperties.dialogComponentWatch.apply(instance.proxy, ["showing", props.type, el]);
      }
    };
    const modalShown = (el) => {
      if (props.type == "prompt" && cmpInput.value.autofocus && inputRef.value) {
        inputRef.value.focus();
      }
      if (typeof instance.appContext.config.globalProperties.dialogComponentWatch == "function") {
        instance.appContext.config.globalProperties.dialogComponentWatch.apply(instance.proxy, ["shown", props.type, el]);
      }
    };
    if (props.type == "prompt") {
      setDefaultValue();
    }
    onMounted(() => {
      obj.event.on($$el.value, "click.dialog", overlayClick);
    });
    __expose({
      $$el
    });
    return (_ctx, _cache) => {
      return openBlock(), createBlock(unref(Modal), {
        ref_key: "modalRef",
        ref: modalRef,
        modelValue: show.value,
        "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => show.value = $event),
        onHide: modalHide,
        onHidding: modalHidding,
        onHidden: modalHidden,
        width: cmpWidth.value,
        "z-index": cmpZIndex.value,
        radius: cmpRadius.value,
        "use-padding": cmpUsePadding.value,
        animation: cmpAnimation.value,
        onShow: modalShow,
        onShowing: modalShowing,
        onShown: modalShown,
        timeout: cmpTimeout.value,
        "overlay-color": cmpOverlayColor.value,
        "mount-el": cmpMountEl.value,
        __ignorePadding: ""
      }, createSlots({
        footer: withCtx(() => [
          createElementVNode("div", _hoisted_5$2, [
            _ctx.type != "alert" ? (openBlock(), createElementBlock("div", {
              key: 0,
              class: "mvi-dialog-cancel",
              textContent: toDisplayString(cmpBtnText.value[1]),
              onClick: cancelFun,
              style: normalizeStyle({ color: cmpBtnColor.value[1] || "", borderBottomLeftRadius: cmpRadius.value })
            }, null, 12, _hoisted_6$2)) : createCommentVNode("", true),
            createElementVNode("div", {
              class: "mvi-dialog-ok",
              textContent: toDisplayString(_ctx.type == "alert" ? cmpBtnText.value : cmpBtnText.value[0]),
              onClick: okFun,
              style: normalizeStyle({ color: _ctx.type == "alert" ? cmpBtnColor.value || "" : cmpBtnColor.value[0] || "", borderBottomRightRadius: cmpRadius.value })
            }, null, 12, _hoisted_7$2)
          ])
        ]),
        _: 2
      }, [
        cmpTitle.value || cmpIos.value && cmpMessage.value ? {
          name: "title",
          fn: withCtx(() => [
            cmpTitle.value ? (openBlock(), createElementBlock("div", {
              key: 0,
              innerHTML: cmpTitle.value,
              class: "mvi-dialog-title"
            }, null, 8, _hoisted_1$7)) : createCommentVNode("", true),
            cmpMessage.value && cmpIos.value ? (openBlock(), createElementBlock("div", {
              key: 1,
              innerHTML: cmpMessage.value,
              class: "mvi-dialog-ios-content"
            }, null, 8, _hoisted_2$6)) : createCommentVNode("", true)
          ]),
          key: "0"
        } : void 0,
        contentShow.value ? {
          name: "default",
          fn: withCtx(() => [
            !cmpIos.value && cmpMessage.value ? (openBlock(), createElementBlock("div", {
              key: 0,
              innerHTML: cmpMessage.value,
              class: "mvi-dialog-content"
            }, null, 8, _hoisted_3$6)) : createCommentVNode("", true),
            _ctx.type == "prompt" ? (openBlock(), createElementBlock("div", {
              key: 1,
              class: normalizeClass(["mvi-dialog-input", { "mvi-dialog-input-mt": !cmpIos.value && cmpMessage.value }])
            }, [
              withDirectives(createElementVNode("input", {
                ref_key: "inputRef",
                ref: inputRef,
                type: cmpInput.value.type == "number" ? "text" : cmpInput.value.type,
                placeholder: cmpInput.value.placeholder,
                maxlength: cmpInput.value.maxlength,
                class: normalizeClass(inputClass.value),
                style: normalizeStyle(inputStyle.value),
                "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => value.value = $event),
                onInput: inputFun,
                onFocus: inputFocus,
                onBlur: inputBlur,
                inputmode: inputMode.value
              }, null, 46, _hoisted_4$4), [
                [
                  vModelDynamic,
                  value.value,
                  void 0,
                  { trim: true }
                ]
              ]),
              cmpInput.value.clearable ? withDirectives((openBlock(), createBlock(unref(Icon), {
                key: 0,
                type: "times-o",
                class: "mvi-dialog-times",
                onClick: doClear
              }, null, 512)), [
                [vShow, showClear.value]
              ]) : createCommentVNode("", true)
            ], 2)) : createCommentVNode("", true)
          ]),
          key: "1"
        } : void 0
      ]), 1032, ["modelValue", "width", "z-index", "radius", "use-padding", "animation", "timeout", "overlay-color", "mount-el"]);
    };
  }
});
const dialogComponent = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__scopeId", "data-v-c5f20653"]]);
const _hoisted_1$6 = ["innerHTML"];
const _hoisted_2$5 = ["innerHTML"];
const _hoisted_3$5 = {
  key: 1,
  class: "mvi-dialog-input"
};
const _hoisted_4$3 = ["type", "placeholder", "maxlength", "inputMode"];
const _sfc_main$a = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-dialog-pc"
  },
  __name: "dialog-pc",
  props: DialogPcProps,
  setup(__props, { expose: __expose }) {
    const instance = getCurrentInstance();
    const props = __props;
    const ok = ref(false);
    const show = ref(true);
    const focus = ref(false);
    const value = ref("");
    const modalRef = ref(null);
    const inputRef = ref(null);
    const $$el = computed(() => {
      return modalRef.value ? modalRef.value.$$el : null;
    });
    const cmpShowTimes = computed(() => {
      if (typeof props.showTimes == "boolean") {
        return props.showTimes;
      }
      return true;
    });
    const cmpTitle = computed(() => {
      if (typeof props.title == "string") {
        return props.title;
      }
      return "提示";
    });
    const cmpMessage = computed(() => {
      if (typeof props.message == "string") {
        return props.message;
      }
      if (obj.common.isObject(props.message)) {
        return JSON.stringify(props.message);
      }
      return String(props.message);
    });
    const cmpBtns = computed(() => {
      let btns = {
        ok: {
          type: "primary",
          plain: false,
          size: "medium",
          text: "确定",
          round: false,
          square: false,
          disabled: false,
          loading: false,
          loadText: "loading...",
          loadIcon: {
            type: "load-e",
            spin: true
          }
        },
        cancel: {
          type: "default",
          plain: false,
          size: "medium",
          text: "取消",
          round: false,
          square: false,
          disabled: false,
          loading: false,
          loadText: "loading...",
          loadIcon: {
            type: "load-e",
            spin: true
          }
        }
      };
      if (obj.common.isObject(props.btns)) {
        if (obj.common.isObject(props.btns.ok)) {
          if (typeof props.btns.ok.type == "string") {
            btns.ok.type = props.btns.ok.type;
          }
          if (typeof props.btns.ok.plain == "boolean") {
            btns.ok.plain = props.btns.ok.plain;
          }
          if (typeof props.btns.ok.text == "string") {
            btns.ok.text = props.btns.ok.text;
          }
          if (typeof props.btns.ok.size == "string") {
            btns.ok.size = props.btns.ok.size;
          }
          if (typeof props.btns.ok.round == "boolean") {
            btns.ok.round = props.btns.ok.round;
          }
          if (typeof props.btns.ok.square == "boolean") {
            btns.ok.square = props.btns.ok.square;
          }
          if (typeof props.btns.ok.disabled == "boolean") {
            btns.ok.disabled = props.btns.ok.disabled;
          }
          if (typeof props.btns.ok.loading == "boolean") {
            btns.ok.loading = props.btns.ok.loading;
          }
          if (typeof props.btns.ok.loadText == "string") {
            btns.ok.loadText = props.btns.ok.loadText;
          }
          if (typeof props.btns.ok.loadIcon == "string" || obj.common.isObject(props.btns.ok.loadIcon)) {
            btns.ok.loadIcon = props.btns.ok.loadIcon;
          }
        }
        if (obj.common.isObject(props.btns.cancel)) {
          if (typeof props.btns.cancel.type == "string") {
            btns.cancel.type = props.btns.cancel.type;
          }
          if (typeof props.btns.cancel.plain == "boolean") {
            btns.cancel.plain = props.btns.cancel.plain;
          }
          if (typeof props.btns.cancel.text == "string") {
            btns.cancel.text = props.btns.cancel.text;
          }
          if (typeof props.btns.cancel.size == "string") {
            btns.cancel.size = props.btns.cancel.size;
          }
          if (typeof props.btns.cancel.round == "boolean") {
            btns.cancel.round = props.btns.cancel.round;
          }
          if (typeof props.btns.cancel.square == "boolean") {
            btns.cancel.square = props.btns.cancel.square;
          }
          if (typeof props.btns.cancel.disabled == "boolean") {
            btns.cancel.disabled = props.btns.cancel.disabled;
          }
          if (typeof props.btns.cancel.loading == "boolean") {
            btns.cancel.loading = props.btns.cancel.loading;
          }
          if (typeof props.btns.cancel.loadText == "string") {
            btns.cancel.loadText = props.btns.cancel.loadText;
          }
          if (typeof props.btns.cancel.loadIcon == "string" || obj.common.isObject(props.btns.cancel.loadIcon)) {
            btns.cancel.loadIcon = props.btns.cancel.loadIcon;
          }
        }
      }
      return btns;
    });
    const cmpWidth = computed(() => {
      if (typeof props.width == "string" && props.width) {
        return props.width;
      }
      return "7.2rem";
    });
    const cmpInput = computed(() => {
      let input2 = {
        placeholder: "",
        type: "text",
        autofocus: true,
        maxlength: -1,
        clearable: true,
        mode: "text",
        align: "left",
        value: ""
      };
      if (obj.common.isObject(props.input)) {
        if (typeof props.input.placeholder == "string") {
          input2.placeholder = props.input.placeholder;
        }
        if (typeof props.input.type == "string" && props.input.type) {
          input2.type = props.input.type;
        }
        if (typeof props.input.autofocus == "boolean") {
          input2.autofocus = props.input.autofocus;
        }
        if (obj.number.isNumber(props.input.maxlength)) {
          input2.maxlength = props.input.maxlength;
        }
        if (typeof props.input.clearable == "boolean") {
          input2.clearable = props.input.clearable;
        }
        if (typeof props.input.mode == "string") {
          input2.mode = props.input.mode;
        }
        if (typeof props.input.align == "string") {
          input2.align = props.input.align;
        }
        if (typeof props.input.value == "string" || obj.number.isNumber(props.input.value)) {
          input2.value = props.input.value.toString();
        }
      }
      return input2;
    });
    const cmpZIndex = computed(() => {
      if (obj.number.isNumber(props.zIndex)) {
        return props.zIndex;
      }
      return 1e3;
    });
    const cmpUsePadding = computed(() => {
      if (typeof props.usePadding == "boolean") {
        return props.usePadding;
      }
      return false;
    });
    const cmpAnimation = computed(() => {
      if (typeof props.animation == "string" && props.animation) {
        return props.animation;
      }
      return "translate-top";
    });
    const cmpRadius = computed(() => {
      if (typeof props.radius == "string" && props.radius) {
        return props.radius;
      }
      return "0.12rem";
    });
    const cmpOverlayColor = computed(() => {
      if (typeof props.overlayColor == "string" && props.overlayColor) {
        return props.overlayColor;
      }
      return "";
    });
    const cmpClosable = computed(() => {
      if (typeof props.closable == "boolean") {
        return props.closable;
      } else {
        return false;
      }
    });
    const cmpCenter = computed(() => {
      if (typeof props.center == "boolean") {
        return props.center;
      }
      return false;
    });
    const cmpMountEl = computed(() => {
      if (typeof props.mountEl == "string" && props.mountEl) {
        return props.mountEl;
      }
      return "body";
    });
    const cmpTimeout = computed(() => {
      if (obj.number.isNumber(props.timeout)) {
        return props.timeout;
      }
      return 200;
    });
    const contentShow = computed(() => {
      if (props.type == "Alert" || props.type == "Confirm") {
        if (cmpMessage.value) {
          return true;
        }
        return false;
      }
      return true;
    });
    const showClear = computed(() => {
      return !!(focus.value && value.value);
    });
    const inputClass = computed(() => {
      let cls = [];
      if (showClear.value && cmpInput.value.clearable) {
        cls.push("mvi-dialog-input-padding");
      }
      return cls;
    });
    const inputMode = computed(() => {
      let mode = "text";
      if (["none", "text", "decimal", "numeric", "tel", "search", "email", "url"].includes(cmpInput.value.mode)) {
        mode = cmpInput.value.mode;
      }
      return mode;
    });
    const inputStyle = computed(() => {
      let style = {};
      if (["left", "right", "center"].includes(cmpInput.value.align)) {
        style.textAlign = cmpInput.value.align;
      }
      return style;
    });
    const overlayClick = (event2) => {
      if (!cmpClosable.value) {
        return;
      }
      if (event2.target != event2.currentTarget) {
        return;
      }
      show.value = false;
      ok.value = false;
    };
    const setDefaultValue = () => {
      let _value = cmpInput.value.value;
      if (cmpInput.value.type == "number") {
        _value = _value.replace(/\D/g, "");
      }
      if (cmpInput.value.maxlength > 0 && _value.length > cmpInput.value.maxlength) {
        _value = _value.substring(0, cmpInput.value.maxlength);
      }
      value.value = _value;
    };
    const inputFocus = () => {
      focus.value = true;
    };
    const inputBlur = () => {
      setTimeout(() => {
        focus.value = false;
      }, 200);
    };
    const inputFun = () => {
      let _value = value.value;
      if (cmpInput.value.type == "number") {
        _value = _value.replace(/\D/g, "");
      }
      if (cmpInput.value.maxlength > 0 && _value.length > cmpInput.value.maxlength) {
        _value = _value.substring(0, cmpInput.value.maxlength);
      }
      value.value = _value;
    };
    const doClear = () => {
      if (!cmpInput.value.clearable) {
        return;
      }
      setTimeout(() => {
        value.value = "";
        inputRef.value.focus();
      }, 210);
    };
    const okFun = () => {
      show.value = false;
      ok.value = true;
    };
    const cancelFun = () => {
      show.value = false;
      ok.value = false;
    };
    const modalHide = (el) => {
      if (typeof instance.appContext.config.globalProperties.dialogComponentWatch == "function") {
        instance.appContext.config.globalProperties.dialogComponentWatch.apply(instance.proxy, ["hide", props.type, el]);
      }
    };
    const modalHidding = (el) => {
      if (typeof instance.appContext.config.globalProperties.dialogComponentWatch == "function") {
        instance.appContext.config.globalProperties.dialogComponentWatch.apply(instance.proxy, ["hidding", props.type, el]);
      }
    };
    const modalHidden = (el) => {
      if (typeof instance.appContext.config.globalProperties.dialogComponentWatch == "function") {
        instance.appContext.config.globalProperties.dialogComponentWatch.apply(instance.proxy, ["hidden", props.type, el]);
      }
      if (props.type == "Alert") {
        props.__remove();
      } else if (props.type == "Confirm") {
        props.__remove(ok.value);
      } else if (props.type == "Prompt") {
        props.__remove(ok.value, value.value);
      }
    };
    const modalShow = (el) => {
      if (typeof instance.appContext.config.globalProperties.dialogComponentWatch == "function") {
        instance.appContext.config.globalProperties.dialogComponentWatch.apply(instance.proxy, ["show", props.type, el]);
      }
    };
    const modalShowing = (el) => {
      if (typeof instance.appContext.config.globalProperties.dialogComponentWatch == "function") {
        instance.appContext.config.globalProperties.dialogComponentWatch.apply(instance.proxy, ["showing", props.type, el]);
      }
    };
    const modalShown = (el) => {
      if (props.type == "Prompt" && cmpInput.value.autofocus && inputRef.value) {
        inputRef.value.focus();
      }
      if (typeof instance.appContext.config.globalProperties.dialogComponentWatch == "function") {
        instance.appContext.config.globalProperties.dialogComponentWatch.apply(instance.proxy, ["shown", props.type, el]);
      }
    };
    if (props.type == "Prompt") {
      setDefaultValue();
    }
    onMounted(() => {
      obj.event.on($$el.value, "click.dialog", overlayClick);
    });
    __expose({
      $$el
    });
    return (_ctx, _cache) => {
      return openBlock(), createBlock(unref(Modal), {
        ref_key: "modalRef",
        ref: modalRef,
        modelValue: show.value,
        "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => show.value = $event),
        "show-times": cmpShowTimes.value,
        onHide: modalHide,
        onHidding: modalHidding,
        onHidden: modalHidden,
        width: cmpWidth.value,
        "z-index": cmpZIndex.value,
        radius: cmpRadius.value,
        "use-padding": cmpUsePadding.value,
        animation: cmpAnimation.value,
        onShow: modalShow,
        onShowing: modalShowing,
        onShown: modalShown,
        timeout: cmpTimeout.value,
        "overlay-color": cmpOverlayColor.value,
        "mount-el": cmpMountEl.value,
        center: cmpCenter.value
      }, createSlots({ _: 2 }, [
        cmpTitle.value ? {
          name: "title",
          fn: withCtx(() => [
            createElementVNode("div", {
              innerHTML: cmpTitle.value,
              class: "mvi-dialog-title"
            }, null, 8, _hoisted_1$6)
          ]),
          key: "0"
        } : void 0,
        contentShow.value ? {
          name: "default",
          fn: withCtx(() => [
            cmpMessage.value ? (openBlock(), createElementBlock("div", {
              key: 0,
              innerHTML: cmpMessage.value,
              class: normalizeClass(["mvi-dialog-content", { center: _ctx.center }])
            }, null, 10, _hoisted_2$5)) : createCommentVNode("", true),
            _ctx.type == "Prompt" ? (openBlock(), createElementBlock("div", _hoisted_3$5, [
              withDirectives(createElementVNode("input", {
                ref_key: "inputRef",
                ref: inputRef,
                type: cmpInput.value.type == "number" ? "text" : cmpInput.value.type,
                placeholder: cmpInput.value.placeholder,
                maxlength: cmpInput.value.maxlength,
                class: normalizeClass(inputClass.value),
                style: normalizeStyle(inputStyle.value),
                "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => value.value = $event),
                onInput: inputFun,
                onFocus: inputFocus,
                onBlur: inputBlur,
                onKeyup: withKeys(okFun, ["enter"]),
                inputMode: inputMode.value
              }, null, 46, _hoisted_4$3), [
                [
                  vModelDynamic,
                  value.value,
                  void 0,
                  { trim: true }
                ]
              ]),
              cmpInput.value.clearable ? withDirectives((openBlock(), createBlock(unref(Icon), {
                key: 0,
                type: "times-o",
                class: "mvi-dialog-times",
                onClick: doClear
              }, null, 512)), [
                [vShow, showClear.value]
              ]) : createCommentVNode("", true)
            ])) : createCommentVNode("", true),
            createElementVNode("div", {
              class: normalizeClass(["mvi-dialog-footer", { center: _ctx.center }])
            }, [
              _ctx.type != "Alert" ? (openBlock(), createBlock(unref(Button), {
                key: 0,
                type: cmpBtns.value.cancel.type,
                plain: cmpBtns.value.cancel.plain,
                class: "mvi-dialog-cancel",
                onClick: cancelFun,
                size: cmpBtns.value.cancel.size,
                round: cmpBtns.value.cancel.round,
                square: cmpBtns.value.cancel.square,
                loading: cmpBtns.value.cancel.loading,
                "load-text": cmpBtns.value.cancel.loadText,
                "load-icon": cmpBtns.value.cancel.loadIcon,
                disabled: cmpBtns.value.cancel.disabled
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString(cmpBtns.value.cancel.text), 1)
                ]),
                _: 1
              }, 8, ["type", "plain", "size", "round", "square", "loading", "load-text", "load-icon", "disabled"])) : createCommentVNode("", true),
              createVNode(unref(Button), {
                type: cmpBtns.value.ok.type,
                plain: cmpBtns.value.ok.plain,
                onClick: okFun,
                size: cmpBtns.value.ok.size,
                round: cmpBtns.value.ok.round,
                square: cmpBtns.value.ok.square,
                loading: cmpBtns.value.ok.loading,
                "load-text": cmpBtns.value.ok.loadText,
                "load-icon": cmpBtns.value.ok.loadIcon,
                disabled: cmpBtns.value.ok.disabled
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString(cmpBtns.value.ok.text), 1)
                ]),
                _: 1
              }, 8, ["type", "plain", "size", "round", "square", "loading", "load-text", "load-icon", "disabled"])
            ], 2)
          ]),
          key: "1"
        } : void 0
      ]), 1032, ["modelValue", "show-times", "width", "z-index", "radius", "use-padding", "animation", "timeout", "overlay-color", "mount-el", "center"]);
    };
  }
});
const dialogPcComponent = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-c0195374"]]);
const Dialog = {
  //初始化参数
  initParams: (type, options) => {
    let opts = {};
    if (obj.common.isObject(options)) {
      opts.title = options.title;
      opts.message = options.message;
      opts.width = options.width;
      opts.zIndex = options.zIndex;
      opts.animation = options.animation;
      opts.radius = options.radius;
      opts.overlayColor = options.overlayColor;
      opts.closable = options.closable;
      opts.input = options.input;
      opts.usePadding = options.usePadding;
      opts.mountEl = options.mountEl;
      opts.timeout = options.timeout;
      if (type == "alert" || type == "confirm" || type == "prompt") {
        opts.btnText = options.btnText;
        opts.btnColor = options.btnColor;
        opts.ios = options.ios;
      } else if (type == "Alert" || type == "Confirm" || type == "Prompt") {
        opts.center = options.center;
        opts.btns = options.btns;
        opts.showTimes = options.showTimes;
      }
    } else {
      opts.message = options;
    }
    opts.type = type;
    return opts;
  },
  //安装函数
  install: (app) => {
    app.config.globalProperties.$alert = Dialog.alert.bind(app);
    app.provide("$alert", Dialog.alert.bind(app));
    app.config.globalProperties.$confirm = Dialog.confirm.bind(app);
    app.provide("$confirm", Dialog.confirm.bind(app));
    app.config.globalProperties.$prompt = Dialog.prompt.bind(app);
    app.provide("$prompt", Dialog.prompt.bind(app));
    app.config.globalProperties.$Alert = Dialog.Alert.bind(app);
    app.provide("$Alert", Dialog.Alert.bind(app));
    app.config.globalProperties.$Confirm = Dialog.Confirm.bind(app);
    app.provide("$Confirm", Dialog.Confirm.bind(app));
    app.config.globalProperties.$Prompt = Dialog.Prompt.bind(app);
    app.provide("$Prompt", Dialog.Prompt.bind(app));
  },
  //提示框
  alert: function(options) {
    return new Promise((resolve) => {
      let opts = Dialog.initParams("alert", options);
      let mountNode = obj.element.string2dom("<div></div>");
      document.body.appendChild(mountNode);
      const instance = createApp(dialogComponent, {
        ...opts,
        __remove: () => {
          instance.unmount();
          mountNode.remove();
          resolve();
        }
      });
      const _app = this;
      if (_app && _app.config && _app.config.globalProperties && typeof _app.config.globalProperties.dialogComponentWatch == "function") {
        instance.config.globalProperties.dialogComponentWatch = _app.config.globalProperties.dialogComponentWatch;
      }
      instance.mount(mountNode);
    });
  },
  //确认框
  confirm: function(options) {
    return new Promise((resolve) => {
      let opts = Dialog.initParams("confirm", options);
      let mountNode = obj.element.string2dom("<div></div>");
      document.body.appendChild(mountNode);
      const instance = createApp(dialogComponent, {
        ...opts,
        __remove: (ok) => {
          instance.unmount();
          mountNode.remove();
          resolve(ok);
        }
      });
      const _app = this;
      if (_app && _app.config && _app.config.globalProperties && typeof _app.config.globalProperties.dialogComponentWatch == "function") {
        instance.config.globalProperties.dialogComponentWatch = _app.config.globalProperties.dialogComponentWatch;
      }
      instance.mount(mountNode);
    });
  },
  //信息输入框
  prompt: function(options) {
    return new Promise((resolve) => {
      let opts = Dialog.initParams("prompt", options);
      let mountNode = obj.element.string2dom("<div></div>");
      document.body.appendChild(mountNode);
      const instance = createApp(dialogComponent, {
        ...opts,
        __remove: (ok, value) => {
          instance.unmount();
          mountNode.remove();
          resolve({
            ok,
            value
          });
        }
      });
      const _app = this;
      if (_app && _app.config && _app.config.globalProperties && typeof _app.config.globalProperties.dialogComponentWatch == "function") {
        instance.config.globalProperties.dialogComponentWatch = _app.config.globalProperties.dialogComponentWatch;
      }
      instance.mount(mountNode);
    });
  },
  //pc端提示框
  Alert: function(options) {
    return new Promise((resolve) => {
      let opts = Dialog.initParams("Alert", options);
      let mountNode = obj.element.string2dom("<div></div>");
      document.body.appendChild(mountNode);
      const instance = createApp(dialogPcComponent, {
        ...opts,
        __remove: () => {
          instance.unmount();
          mountNode.remove();
          resolve();
        }
      });
      const _app = this;
      if (_app && _app.config && _app.config.globalProperties && typeof _app.config.globalProperties.dialogComponentWatch == "function") {
        instance.config.globalProperties.dialogComponentWatch = _app.config.globalProperties.dialogComponentWatch;
      }
      instance.mount(mountNode);
    });
  },
  //pc端确认框
  Confirm: function(options) {
    return new Promise((resolve) => {
      let opts = Dialog.initParams("Confirm", options);
      let mountNode = obj.element.string2dom("<div></div>");
      document.body.appendChild(mountNode);
      const instance = createApp(dialogPcComponent, {
        ...opts,
        __remove: (ok) => {
          instance.unmount();
          mountNode.remove();
          resolve(ok);
        }
      });
      const _app = this;
      if (_app && _app.config && _app.config.globalProperties && typeof _app.config.globalProperties.dialogComponentWatch == "function") {
        instance.config.globalProperties.dialogComponentWatch = _app.config.globalProperties.dialogComponentWatch;
      }
      instance.mount(mountNode);
    });
  },
  //pc端信息输入框
  Prompt: function(options) {
    return new Promise((resolve) => {
      let opts = Dialog.initParams("Prompt", options);
      let mountNode = obj.element.string2dom("<div></div>");
      document.body.appendChild(mountNode);
      const instance = createApp(dialogPcComponent, {
        ...opts,
        __remove: (ok, value) => {
          instance.unmount();
          mountNode.remove();
          resolve({
            ok,
            value
          });
        }
      });
      const _app = this;
      if (_app && _app.config && _app.config.globalProperties && typeof _app.config.globalProperties.dialogComponentWatch == "function") {
        instance.config.globalProperties.dialogComponentWatch = _app.config.globalProperties.dialogComponentWatch;
      }
      instance.mount(mountNode);
    });
  }
};
const SwipeCellProps = {
  //是否禁用滑动
  disabled: {
    type: Boolean,
    default: false
  },
  //默认点击center部分关闭展开的左右内容
  centerClose: {
    type: Boolean,
    default: true
  }
};
const _hoisted_1$5 = { class: "mvi-swipe-cell" };
const _sfc_main$9 = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-swipe-cell"
  },
  __name: "swipe-cell",
  props: SwipeCellProps,
  emits: ["open", "close"],
  setup(__props, { expose: __expose, emit: __emit }) {
    const instance = getCurrentInstance();
    const props = __props;
    const emits = __emit;
    const leftRef = ref(null);
    const rightRef = ref(null);
    const wrapperRef = ref(null);
    const translateX = ref(0);
    const isDown = ref(false);
    const startX = ref(0);
    const movingX = ref(0);
    const openStatus = ref("");
    const animationTimer = ref(null);
    const wrapperStyle = computed(() => {
      return {
        transform: `translate3d(${translateX.value}px, 0px, 0px)`
      };
    });
    const setAnimation = (callback, timeout = 600) => {
      return new Promise((resolve) => {
        if (wrapperRef.value) {
          wrapperRef.value.style.transition = `transform ${timeout}ms cubic-bezier(.18,.89,.32,1)`;
          wrapperRef.value.offsetWidth;
          if (typeof callback == "function") {
            callback();
          }
          if (animationTimer.value) {
            clearTimeout(animationTimer.value);
          }
          animationTimer.value = setTimeout(() => {
            if (wrapperRef.value) {
              wrapperRef.value.style.transition = "";
              wrapperRef.value.offsetWidth;
            }
            resolve();
          }, timeout);
        }
      });
    };
    const open = (placement = "left") => {
      if (props.disabled) {
        return;
      }
      if (placement == "left") {
        if (!leftRef.value) {
          return;
        }
        if (translateX.value == leftRef.value.offsetWidth) {
          return;
        }
        setAnimation(() => {
          if (leftRef.value) {
            translateX.value = leftRef.value.offsetWidth;
          }
        }).then(() => {
          if (openStatus.value == placement) {
            return;
          }
          openStatus.value = placement;
          emits("open", placement);
        });
      } else {
        if (!rightRef.value) {
          return;
        }
        if (translateX.value == -rightRef.value.offsetWidth) {
          return;
        }
        setAnimation(() => {
          if (rightRef.value) {
            translateX.value = -rightRef.value.offsetWidth;
          }
        }).then(() => {
          if (openStatus.value == placement) {
            return;
          }
          openStatus.value = placement;
          emits("open", placement);
        });
      }
    };
    const close = () => {
      if (props.disabled) {
        return;
      }
      if (translateX.value == 0) {
        return;
      }
      setAnimation(() => {
        translateX.value = 0;
      }).then(() => {
        if (openStatus.value) {
          emits("close", openStatus.value);
          openStatus.value = "";
        }
      });
    };
    const handleMouseOpt = (event2) => {
      if (props.disabled) {
        return;
      }
      if (!leftRef.value && !rightRef.value) {
        return;
      }
      if (event2.type == "mousedown") {
        isDown.value = true;
        startX.value = event2.pageX;
        movingX.value = event2.pageX;
      } else if (event2.type == "mousemove") {
        if (isDown.value) {
          if (event2.cancelable) {
            event2.preventDefault();
          }
          const moveX = event2.pageX - movingX.value;
          if (moveX > 0) {
            const width = leftRef.value ? leftRef.value.offsetWidth : obj.element.rem2px(0.1);
            if (translateX.value >= width) {
              return;
            }
          }
          if (moveX < 0) {
            const width = rightRef.value ? rightRef.value.offsetWidth : obj.element.rem2px(0.1);
            if (translateX.value <= -width) {
              return;
            }
          }
          translateX.value += moveX;
          movingX.value = event2.pageX;
        }
      } else if (event2.type == "mouseup") {
        if (isDown.value) {
          isDown.value = false;
          if (event2.pageX == startX.value) {
            if (props.centerClose) {
              close();
            }
            return;
          }
          if (translateX.value > 0) {
            if (leftRef.value) {
              const width = leftRef.value.offsetWidth;
              if (translateX.value > width / 2) {
                setAnimation(() => {
                  translateX.value = width;
                }).then(() => {
                  if (openStatus.value == "left") {
                    return;
                  }
                  openStatus.value = "left";
                  emits("open", openStatus.value);
                });
              } else {
                setAnimation(() => {
                  translateX.value = 0;
                }).then(() => {
                  if (openStatus.value) {
                    emits("close", openStatus.value);
                    openStatus.value = "";
                  }
                });
              }
            } else {
              setAnimation(() => {
                translateX.value = 0;
              }).then(() => {
                if (openStatus.value) {
                  emits("close", openStatus.value);
                  openStatus.value = "";
                }
              });
            }
          }
          if (translateX.value < 0) {
            if (rightRef.value) {
              const width = rightRef.value.offsetWidth;
              if (translateX.value < -width / 2) {
                setAnimation(() => {
                  translateX.value = -width;
                }).then(() => {
                  if (openStatus.value == "right") {
                    return;
                  }
                  openStatus.value = "right";
                  emits("open", openStatus.value);
                });
              } else {
                setAnimation(() => {
                  translateX.value = 0;
                }).then(() => {
                  if (openStatus.value) {
                    emits("close", openStatus.value);
                    openStatus.value = "";
                  }
                });
              }
            } else {
              setAnimation(() => {
                translateX.value = 0;
              }).then(() => {
                if (openStatus.value) {
                  emits("close", openStatus.value);
                  openStatus.value = "";
                }
              });
            }
          }
        }
      }
    };
    const handleTouchOpt = (event2) => {
      if (props.disabled) {
        return;
      }
      if (!leftRef.value && !rightRef.value) {
        return;
      }
      if (event2.type == "touchstart") {
        startX.value = event2.targetTouches[0].pageX;
        movingX.value = event2.targetTouches[0].pageX;
      } else if (event2.type == "touchmove") {
        if (event2.cancelable) {
          event2.preventDefault();
        }
        const moveX = event2.targetTouches[0].pageX - movingX.value;
        if (moveX > 0) {
          const width = leftRef.value ? leftRef.value.offsetWidth : obj.element.rem2px(0.1);
          if (translateX.value >= width) {
            return;
          }
        }
        if (moveX < 0) {
          const width = rightRef.value ? rightRef.value.offsetWidth : obj.element.rem2px(0.1);
          if (translateX.value <= -width) {
            return;
          }
        }
        translateX.value += moveX;
        movingX.value = event2.targetTouches[0].pageX;
      } else if (event2.type == "touchend") {
        if (event2.changedTouches[0].pageX == startX.value) {
          if (props.centerClose) {
            close();
          }
          return;
        }
        if (translateX.value > 0) {
          if (leftRef.value) {
            const width = leftRef.value.offsetWidth;
            if (translateX.value > width / 2) {
              setAnimation(() => {
                translateX.value = width;
              }).then(() => {
                if (openStatus.value == "left") {
                  return;
                }
                openStatus.value = "left";
                emits("open", openStatus.value);
              });
            } else {
              setAnimation(() => {
                translateX.value = 0;
              }).then(() => {
                if (openStatus.value) {
                  emits("close", openStatus.value);
                  openStatus.value = "";
                }
              });
            }
          } else {
            setAnimation(() => {
              translateX.value = 0;
            }).then(() => {
              if (openStatus.value) {
                emits("close", openStatus.value);
                openStatus.value = "";
              }
            });
          }
        }
        if (translateX.value < 0) {
          if (rightRef.value) {
            const width = rightRef.value.offsetWidth;
            if (translateX.value < -width / 2) {
              setAnimation(() => {
                translateX.value = -width;
              }).then(() => {
                if (openStatus.value == "right") {
                  return;
                }
                openStatus.value = "right";
                emits("open", openStatus.value);
              });
            } else {
              setAnimation(() => {
                translateX.value = 0;
              }).then(() => {
                if (openStatus.value) {
                  emits("close", openStatus.value);
                  openStatus.value = "";
                }
              });
            }
          } else {
            setAnimation(() => {
              translateX.value = 0;
            }).then(() => {
              if (openStatus.value) {
                emits("close", openStatus.value);
                openStatus.value = "";
              }
            });
          }
        }
      }
    };
    watch(
      () => props.disabled,
      (newVal) => {
        if (newVal && translateX.value) {
          setAnimation(() => {
            translateX.value = 0;
          }).then(() => {
            if (openStatus.value) {
              emits("close", openStatus.value);
              openStatus.value = "";
            }
          });
        }
      }
    );
    onMounted(() => {
      obj.event.on(document.documentElement, `mousemove.swipeCell_${instance.uid} mouseup.swipeCell_${instance.uid}`, handleMouseOpt);
    });
    onBeforeUnmount(() => {
      if (animationTimer.value) {
        clearTimeout(animationTimer.value);
        animationTimer.value = null;
      }
      obj.event.off(document.documentElement, `mousemove.swipeCell_${instance.uid} mouseup.swipeCell_${instance.uid}`);
    });
    __expose({
      open,
      close
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", _hoisted_1$5, [
        createElementVNode("div", {
          class: "mvi-swipe-cell-wrapper",
          ref_key: "wrapperRef",
          ref: wrapperRef,
          style: normalizeStyle(wrapperStyle.value)
        }, [
          _ctx.$slots.left ? (openBlock(), createElementBlock("div", {
            key: 0,
            ref_key: "leftRef",
            ref: leftRef,
            class: "mvi-swipe-cell-left"
          }, [
            renderSlot(_ctx.$slots, "left", {}, void 0, true)
          ], 512)) : createCommentVNode("", true),
          createElementVNode("div", {
            class: "mvi-swipe-cell-center",
            onMousedown: handleMouseOpt,
            onTouchstart: handleTouchOpt,
            onTouchmove: handleTouchOpt,
            onTouchend: handleTouchOpt
          }, [
            renderSlot(_ctx.$slots, "default", {}, void 0, true)
          ], 32),
          _ctx.$slots.right ? (openBlock(), createElementBlock("div", {
            key: 1,
            ref_key: "rightRef",
            ref: rightRef,
            class: "mvi-swipe-cell-right"
          }, [
            renderSlot(_ctx.$slots, "right", {}, void 0, true)
          ], 512)) : createCommentVNode("", true)
        ], 4)
      ]);
    };
  }
});
const swipeCell = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__scopeId", "data-v-b9ffb2f1"]]);
const SwipeCell = withInstall(swipeCell);
const TabbarItemProps = {
  //路由参数配置
  route: {
    type: [String, Object],
    default: null
  },
  //图标
  icon: {
    type: [String, Object],
    default: null
  },
  //名称
  name: {
    type: String,
    default: null
  },
  //值
  value: {
    type: [Object, Number, String, Array],
    default: null
  },
  //是否禁用
  disabled: {
    type: Boolean,
    default: false
  },
  //徽章角标
  badge: {
    type: Object,
    default: null
  }
};
const TabbarProps = {
  //激活标签的value值
  modelValue: {
    type: [Object, Number, String, Array],
    default: null
  },
  //标签栏的标签配置
  tabs: {
    type: Array,
    default: function() {
      return [];
    }
  },
  //是否固定底部
  fixed: {
    type: Boolean,
    default: false
  },
  //是否显示上边框
  border: {
    type: Boolean,
    default: false
  },
  //层级
  zIndex: {
    type: Number,
    default: 400
  },
  //激活颜色
  activeColor: {
    type: String,
    default: null
  },
  //未激活颜色
  inactiveColor: {
    type: String,
    default: null
  },
  //是否显示点击态
  active: {
    type: Boolean,
    default: true
  },
  //标签排列方式
  flex: {
    type: String,
    default: null
  },
  //设置每个标签左外边距
  offset: {
    type: String,
    default: null
  }
};
const _hoisted_1$4 = ["disabled"];
const _hoisted_2$4 = { class: "mvi-tabbar-item-child" };
const _hoisted_3$4 = ["textContent"];
const _sfc_main$8 = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-tabbar-item"
  },
  __name: "tabbar-item",
  props: TabbarItemProps,
  setup(__props) {
    const instance = getCurrentInstance();
    const tabbar2 = inject("tabbar");
    const props = __props;
    const parseIcon = computed(() => {
      return (params) => {
        let icon2 = {
          spin: false,
          type: "",
          url: "",
          color: "",
          size: ""
        };
        if (obj.common.isObject(params)) {
          if (typeof params.spin == "boolean") {
            icon2.spin = params.spin;
          }
          if (typeof params.type == "string") {
            icon2.type = params.type;
          }
          if (typeof params.url == "string") {
            icon2.url = params.url;
          }
          if (typeof params.color == "string") {
            icon2.color = params.color;
          }
          if (typeof params.size == "string") {
            icon2.size = params.size;
          }
        } else if (typeof params == "string") {
          icon2.type = params;
        }
        return icon2;
      };
    });
    const cmpClass = computed(() => {
      let cls = [];
      if (obj.common.equal(props.value, tabbar2.props.modelValue)) {
        cls.push("item-active");
      }
      if (tabbar2.props.active && !props.disabled && !obj.common.equal(props.value, tabbar2.props.modelValue)) {
        cls.push("active");
      }
      return cls;
    });
    const cmpStyle = computed(() => {
      let style = {};
      if (obj.common.equal(props.value, tabbar2.props.modelValue)) {
        if (tabbar2.props.activeColor) {
          style.color = tabbar2.props.activeColor;
        }
      } else {
        if (tabbar2.props.inactiveColor) {
          style.color = tabbar2.props.inactiveColor;
        }
      }
      return style;
    });
    const cmpRoute = computed(() => {
      if (!props.route) {
        return null;
      }
      let route = {};
      if (typeof props.route == "string") {
        route = {
          path: props.route
        };
      } else if (obj.common.isObject(props.route)) {
        if (typeof props.route.path == "string" && props.route.path) {
          route.path = props.route.path;
        }
        if (typeof props.route.name == "string" && props.route.name) {
          route.name = props.route.name;
        }
        if (obj.common.isObject(props.route.query)) {
          route.query = props.route.query;
        } else {
          route.query = {};
        }
        if (obj.common.isObject(props.route.params)) {
          route.params = props.route.params;
        } else {
          route.params = {};
        }
        if (typeof props.route.replace == "boolean") {
          route.replace = props.route.replace;
        } else {
          route.replace = false;
        }
      }
      if (!route.query) {
        route.query = {};
      }
      if (!route.params) {
        route.params = {};
      }
      return route;
    });
    const setActive = () => {
      tabbar2.emit("item-click", JSON.parse(JSON.stringify(props)));
      if (props.disabled) {
        return;
      }
      if (obj.common.equal(tabbar2.props.modelValue, props.value)) {
        return;
      }
      if (cmpRoute.value && instance.appContext.config.globalProperties.$router && instance.appContext.config.globalProperties.$router.replace && instance.appContext.config.globalProperties.$router.push) {
        if (cmpRoute.value.path) {
          if (cmpRoute.value.replace) {
            instance.appContext.config.globalProperties.$router.replace({
              path: cmpRoute.value.path,
              query: cmpRoute.value.query,
              params: cmpRoute.value.params
            });
          } else {
            instance.appContext.config.globalProperties.$router.push({
              path: cmpRoute.value.path,
              query: cmpRoute.value.query,
              params: cmpRoute.value.params
            });
          }
        } else if (cmpRoute.value.name) {
          if (cmpRoute.value.replace) {
            instance.appContext.config.globalProperties.$router.replace({
              name: cmpRoute.value.name,
              query: cmpRoute.value.query,
              params: cmpRoute.value.params
            });
          } else {
            instance.appContext.config.globalProperties.$router.push({
              name: cmpRoute.value.name,
              query: cmpRoute.value.query,
              params: cmpRoute.value.params
            });
          }
        }
      }
      tabbar2.emit("update:modelValue", props.value);
      tabbar2.emit("change", JSON.parse(JSON.stringify(props)));
    };
    return (_ctx, _cache) => {
      var _a, _b, _c, _d, _e, _f, _g;
      return openBlock(), createElementBlock("div", {
        disabled: _ctx.disabled || null,
        class: normalizeClass(["mvi-tabbar-item", cmpClass.value]),
        style: normalizeStyle(cmpStyle.value),
        onClick: setActive
      }, [
        createVNode(unref(Badge), {
          show: (_a = _ctx.badge) == null ? void 0 : _a.show,
          class: "mvi-tabbar-badge",
          content: (_b = _ctx.badge) == null ? void 0 : _b.content,
          background: (_c = _ctx.badge) == null ? void 0 : _c.background,
          color: (_d = _ctx.badge) == null ? void 0 : _d.color,
          dot: (_e = _ctx.badge) == null ? void 0 : _e.dot,
          placement: (_f = _ctx.badge) == null ? void 0 : _f.placement,
          offset: (_g = _ctx.badge) == null ? void 0 : _g.offset
        }, {
          default: withCtx(() => [
            createElementVNode("div", _hoisted_2$4, [
              parseIcon.value(_ctx.icon).type || parseIcon.value(_ctx.icon).url ? (openBlock(), createElementBlock("span", {
                key: 0,
                class: "mvi-tabbar-icon",
                style: normalizeStyle({ marginBottom: _ctx.name ? "" : "0px" })
              }, [
                createVNode(unref(Icon), {
                  type: parseIcon.value(_ctx.icon).type,
                  url: parseIcon.value(_ctx.icon).url,
                  spin: parseIcon.value(_ctx.icon).spin,
                  size: parseIcon.value(_ctx.icon).size,
                  color: parseIcon.value(_ctx.icon).color
                }, null, 8, ["type", "url", "spin", "size", "color"])
              ], 4)) : createCommentVNode("", true),
              createElementVNode("span", {
                class: normalizeClass(["mvi-tabbar-name", { small: parseIcon.value(_ctx.icon).type || parseIcon.value(_ctx.icon).url }]),
                textContent: toDisplayString(_ctx.name)
              }, null, 10, _hoisted_3$4)
            ])
          ]),
          _: 1
        }, 8, ["show", "content", "background", "color", "dot", "placement", "offset"])
      ], 14, _hoisted_1$4);
    };
  }
});
const TabbarItem = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__scopeId", "data-v-2f38d1d4"]]);
const _sfc_main$7 = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-tabbar"
  },
  __name: "tabbar",
  props: TabbarProps,
  emits: ["update:modelValue", "item-click", "change"],
  setup(__props, { emit: __emit }) {
    const instance = getCurrentInstance();
    provide("tabbar", instance);
    const props = __props;
    const tabbarItemStyle = computed(() => {
      return (index) => {
        let style = {};
        if (index != 0 && props.offset) {
          style.marginLeft = props.offset;
        }
        return style;
      };
    });
    const tabbarStyle = computed(() => {
      let style = {};
      if (props.fixed && obj.number.isNumber(props.zIndex)) {
        style.zIndex = props.zIndex;
      }
      if (props.flex) {
        style.justifyContent = props.flex;
      }
      return style;
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["mvi-tabbar", { border: _ctx.border, fixed: _ctx.fixed }]),
        style: normalizeStyle(tabbarStyle.value)
      }, [
        (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.tabs, (item, index) => {
          return openBlock(), createBlock(TabbarItem, {
            name: item.name,
            value: item.value,
            icon: item.icon,
            disabled: item.disabled,
            badge: item.badge,
            route: item.route,
            style: normalizeStyle(tabbarItemStyle.value(index))
          }, null, 8, ["name", "value", "icon", "disabled", "badge", "route", "style"]);
        }), 256))
      ], 6);
    };
  }
});
const tabbar = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-7c7ce5e9"]]);
const Tabbar = withInstall(tabbar);
const TableProps = {
  //表格数据
  data: {
    type: Array,
    default: function() {
      return [];
    }
  },
  //表格列配置
  columns: {
    type: Array,
    default: function() {
      return [];
    }
  },
  //是否显示表格外边框
  border: {
    type: Boolean,
    default: false
  },
  //是否显示列边框
  columnBorder: {
    type: Boolean,
    default: false
  },
  //是否显示间隔条纹
  stripe: {
    type: Boolean,
    default: false
  },
  //设置表格最大高度
  height: {
    type: String,
    default: null
  },
  //无数据提示
  noDataMsg: {
    type: String,
    default: "暂无数据"
  },
  //是否显示加载状态
  loading: {
    type: Boolean,
    default: false
  },
  //加载文本
  loadText: {
    type: String,
    default: "正在加载中..."
  },
  //表格列是否居中对齐
  center: {
    type: Boolean,
    default: false
  },
  //单元格样式
  cellClass: {
    type: Function,
    default: null
  },
  //主题色
  activeColor: {
    type: String,
    default: null
  },
  //表格内tooltip的样式
  tooltip: {
    type: Object,
    default: null
  }
};
const _hoisted_1$3 = { class: "mvi-table-header" };
const _hoisted_2$3 = {
  cellpadding: "0",
  cellspacing: "0"
};
const _hoisted_3$3 = {
  key: 0,
  class: "mvi-table-sortable"
};
const _hoisted_4$2 = {
  key: 0,
  class: "mvi-table-loading"
};
const _hoisted_5$1 = {
  key: 0,
  cellpadding: "0",
  cellspacing: "0"
};
const _hoisted_6$1 = { class: "mvi-table-column" };
const _hoisted_7$1 = ["innerHTML"];
const _hoisted_8$1 = ["innerHTML"];
const _hoisted_9 = {
  key: 1,
  class: "mvi-table-nodata"
};
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-table"
  },
  __name: "table",
  props: TableProps,
  emits: ["check", "sort-cancel", "sort-asc", "sort-desc"],
  setup(__props, { expose: __expose, emit: __emit }) {
    const instance = getCurrentInstance();
    const props = __props;
    const emits = __emit;
    const columnAlignKey = ref(0);
    const rowData = ref([]);
    const columnData = ref([]);
    const scrollWidth = ref(0);
    const sortBy = ref("");
    const sortOrder = ref("");
    const checkedRows = ref([]);
    const selectAll = ref(false);
    const headerColumnRefs = ref([]);
    const elRef = ref(null);
    const bodyRef = ref(null);
    const wrapWidth = computed(() => {
      columnAlignKey.value;
      if (headerColumnRefs.value.length) {
        let width = headerColumnRefs.value.reduce((total, _item, index) => {
          const width2 = columnData.value[index].width ? parseWidth(columnData.value[index].width) : obj.element.rem2px(2);
          return total += width2;
        }, 0);
        if (scrollWidth.value) {
          width += scrollWidth.value;
        }
        const tableWidth = obj.element.width(elRef.value);
        return width > tableWidth ? width + "px" : tableWidth + "px";
      }
      return "";
    });
    const headerColumnStyle = computed(() => {
      return (column) => {
        return {
          width: column.width ? parseWidth(column.width) + "px" : "auto"
        };
      };
    });
    const bodyColumnClass = computed(() => {
      return (row2, rowIndex, column, columnIndex) => {
        let cls = [];
        if (props.columnBorder) {
          cls.push("border");
        }
        if (column.className) {
          cls.push(column.className);
        }
        if (typeof props.cellClass == "function") {
          cls.push(props.cellClass.apply(instance.proxy, [row2, rowIndex, column, columnIndex]) || "");
        }
        return cls;
      };
    });
    const bodyColumnStyle = computed(() => {
      return (_column, index) => {
        columnAlignKey.value;
        return {
          width: headerColumnRefs.value[index] ? obj.element.getCssStyle(headerColumnRefs.value[index], "width") : ""
        };
      };
    });
    const sortIconStyle = computed(() => {
      return (_sortOrder, column) => {
        let style = {};
        if (sortBy.value == column.prop && sortOrder.value == _sortOrder) {
          style.color = props.activeColor || "";
        }
        return style;
      };
    });
    const dataFormat = computed(() => {
      return (row2, column) => {
        if (typeof column.format == "function") {
          return column.format.apply(instance.proxy, [row2[column.prop], row2, column]) || "";
        }
        return row2[column.prop] ? row2[column.prop] + "" : "";
      };
    });
    const cmpSelectable = computed(() => {
      return (row2, rowIndex, column) => {
        if (typeof column.selectable == "function") {
          return column.selectable.apply(instance.proxy, [row2, rowIndex]);
        }
        return true;
      };
    });
    const parseWidth = (val) => {
      if (obj.number.isNumber(val)) {
        return val;
      }
      if (typeof val == "string" && val) {
        if (val.endsWith("px")) {
          return parseFloat(val);
        }
        if (val.endsWith("rem")) {
          return obj.element.rem2px(parseFloat(val));
        }
      }
      return 0;
    };
    const deepClone = (data2) => {
      if (Array.isArray(data2)) {
        return data2.map((item) => {
          return deepClone(item);
        });
      }
      if (obj.common.isObject(data2)) {
        let cloneData = {};
        for (let key in data2) {
          cloneData[key] = deepClone(data2[key]);
        }
        return cloneData;
      }
      return data2;
    };
    const getScrollWidth = () => {
      return bodyRef.value.offsetWidth - bodyRef.value.clientWidth;
    };
    const sortAsc = (column) => {
      if (sortBy.value == column.prop && sortOrder.value == "asc") {
        sortBy.value = "";
        sortOrder.value = "";
        if (typeof column.sortMethod == "function") {
          column.sortMethod.apply(instance.proxy, [sortOrder.value, sortBy.value, rowData.value, column]);
        } else {
          rowData.value = deepClone(props.data);
          emits("sort-cancel", rowData.value);
        }
      } else {
        sortBy.value = column.prop;
        sortOrder.value = "asc";
        if (typeof column.sortMethod == "function") {
          column.sortMethod.apply(instance.proxy, [sortOrder.value, sortBy.value, rowData.value, column]);
        } else {
          rowData.value = rowData.value.sort(function(rowA, rowB) {
            if (obj.number.isNumber(rowA[column.prop]) && obj.number.isNumber(rowB[column.prop])) {
              return rowA[column.prop] - rowB[column.prop];
            }
            return rowA[column.prop].toString().localeCompare(rowB[column.prop].toString(), "zh-CN");
          });
          emits("sort-asc", rowData.value);
        }
      }
    };
    const sortDesc = (column) => {
      if (sortBy.value == column.prop && sortOrder.value == "desc") {
        sortBy.value = "";
        sortOrder.value = "";
        if (typeof column.sortMethod == "function") {
          column.sortMethod.apply(instance.proxy, [sortOrder.value, sortBy.value, rowData.value, column]);
        } else {
          rowData.value = deepClone(props.data);
          emits("sort-cancel", rowData.value);
        }
      } else {
        sortBy.value = column.prop;
        sortOrder.value = "desc";
        if (typeof column.sortMethod == "function") {
          column.sortMethod.apply(instance.proxy, [sortOrder.value, sortBy.value, rowData.value, column]);
        } else {
          rowData.value = rowData.value.sort(function(rowA, rowB) {
            if (obj.number.isNumber(rowA[column.prop]) && obj.number.isNumber(rowB[column.prop])) {
              return rowB[column.prop] - rowA[column.prop];
            }
            return -rowA[column.prop].toString().localeCompare(rowB[column.prop].toString(), "zh-CN");
          });
          emits("sort-desc", rowData.value);
        }
      }
    };
    const allSelect = (column) => {
      if (selectAll.value) {
        checkedRows.value = [];
        for (let i = 0; i < rowData.value.length; i++) {
          if (cmpSelectable.value(rowData.value[i], i, column)) {
            checkedRows.value.push(i);
          }
        }
      } else {
        checkedRows.value = [];
      }
      emits("check", checkedRows.value);
    };
    const doCheck = (rowIndex, column) => {
      if (checkedRows.value.length == rowData.value.filter((item, index) => {
        return cmpSelectable.value(item, index, column);
      }).length) {
        selectAll.value = true;
      } else {
        selectAll.value = false;
      }
      emits("check", checkedRows.value, rowIndex);
    };
    const doLayout = () => {
      scrollWidth.value = getScrollWidth();
      nextTick(() => {
        columnAlignKey.value++;
      });
    };
    watch(
      () => props.data,
      (newVal) => {
        rowData.value = deepClone(newVal);
        checkedRows.value = [];
        selectAll.value = false;
        nextTick(() => {
          doLayout();
        });
      },
      {
        immediate: true
      }
    );
    watch(
      () => props.columns,
      (newVal) => {
        columnData.value = deepClone(newVal).filter((column) => {
          return !column.hidden;
        });
      },
      {
        immediate: true
      }
    );
    watch(
      () => props.height,
      () => {
        nextTick(() => {
          doLayout();
        });
      },
      {
        immediate: true
      }
    );
    onMounted(() => {
      doLayout();
      obj.event.on(window, `resize.table_${instance.uid}`, () => {
        doLayout();
      });
    });
    onBeforeUnmount(() => {
      obj.event.off(window, `resize.table_${instance.uid}`);
    });
    __expose({
      doLayout
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["mvi-table", { border: _ctx.border }]),
        ref_key: "elRef",
        ref: elRef
      }, [
        createElementVNode("div", {
          class: "mvi-table-wrap",
          style: normalizeStyle({ width: wrapWidth.value })
        }, [
          createElementVNode("div", _hoisted_1$3, [
            createElementVNode("table", _hoisted_2$3, [
              createElementVNode("tr", null, [
                (openBlock(true), createElementBlock(Fragment, null, renderList(columnData.value, (column, index) => {
                  return openBlock(), createElementBlock("th", {
                    ref_for: true,
                    ref: (el) => headerColumnRefs.value[index] = el,
                    class: normalizeClass({ border: _ctx.columnBorder }),
                    style: normalizeStyle(headerColumnStyle.value(column))
                  }, [
                    createElementVNode("div", {
                      class: normalizeClass(["mvi-table-column", { center: _ctx.center }])
                    }, [
                      column.type == "selection" ? (openBlock(), createBlock(unref(Checkbox), {
                        key: 0,
                        modelValue: selectAll.value,
                        "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => selectAll.value = $event),
                        size: "0.24rem",
                        onChange: ($event) => allSelect(column),
                        color: _ctx.activeColor
                      }, null, 8, ["modelValue", "onChange", "color"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
                        createElementVNode("span", null, toDisplayString(column.label), 1),
                        column.sortable ? (openBlock(), createElementBlock("span", _hoisted_3$3, [
                          createVNode(unref(Icon), {
                            type: "caret-up",
                            class: normalizeClass({ active: sortBy.value == column.prop && sortOrder.value == "asc" }),
                            onClick: ($event) => sortAsc(column),
                            style: normalizeStyle(sortIconStyle.value("asc", column))
                          }, null, 8, ["class", "onClick", "style"]),
                          createVNode(unref(Icon), {
                            type: "caret-down",
                            class: normalizeClass({ active: sortBy.value == column.prop && sortOrder.value == "desc" }),
                            onClick: ($event) => sortDesc(column),
                            style: normalizeStyle(sortIconStyle.value("desc", column))
                          }, null, 8, ["class", "onClick", "style"])
                        ])) : createCommentVNode("", true)
                      ], 64))
                    ], 2)
                  ], 6);
                }), 256)),
                scrollWidth.value ? (openBlock(), createElementBlock("th", {
                  key: 0,
                  class: "placeholder",
                  style: normalizeStyle({ width: scrollWidth.value + "px" })
                }, null, 4)) : createCommentVNode("", true)
              ])
            ])
          ]),
          createElementVNode("div", {
            ref_key: "bodyRef",
            ref: bodyRef,
            class: normalizeClass(["mvi-table-body", { overflow: !!_ctx.height }]),
            style: normalizeStyle({ maxHeight: _ctx.height })
          }, [
            _ctx.loading ? (openBlock(), createElementBlock("div", _hoisted_4$2, [
              createVNode(unref(Loading), { size: "0.32rem" }),
              createElementVNode("span", null, toDisplayString(_ctx.loadText), 1)
            ])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
              rowData.value.length ? (openBlock(), createElementBlock("table", _hoisted_5$1, [
                (openBlock(true), createElementBlock(Fragment, null, renderList(rowData.value, (row2, rowIndex) => {
                  return openBlock(), createElementBlock("tr", {
                    class: normalizeClass({ stripe: _ctx.stripe })
                  }, [
                    (openBlock(true), createElementBlock(Fragment, null, renderList(columnData.value, (column, columnIndex) => {
                      var _a, _b, _c, _d, _e, _f, _g, _h;
                      return openBlock(), createElementBlock("td", {
                        class: normalizeClass(bodyColumnClass.value(row2, rowIndex, column, columnIndex)),
                        style: normalizeStyle(bodyColumnStyle.value(column, columnIndex))
                      }, [
                        createElementVNode("div", _hoisted_6$1, [
                          column.type == "selection" ? (openBlock(), createElementBlock("div", {
                            key: 0,
                            class: normalizeClass(["mvi-table-column-item", { center: _ctx.center }])
                          }, [
                            createVNode(unref(Checkbox), {
                              modelValue: checkedRows.value,
                              "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => checkedRows.value = $event),
                              value: rowIndex,
                              size: "0.24rem",
                              onChange: ($event) => doCheck(rowIndex, column),
                              color: _ctx.activeColor,
                              disabled: !cmpSelectable.value(row2, rowIndex, column)
                            }, null, 8, ["modelValue", "value", "onChange", "color", "disabled"])
                          ], 2)) : column.type == "custom" && _ctx.$slots.custom ? (openBlock(), createElementBlock("div", {
                            key: 1,
                            class: normalizeClass(["mvi-table-column-item", { center: _ctx.center }])
                          }, [
                            renderSlot(_ctx.$slots, "custom", {
                              row: row2,
                              rowIndex,
                              column,
                              columnIndex
                            }, void 0, true)
                          ], 2)) : (openBlock(), createElementBlock("div", {
                            key: 2,
                            class: normalizeClass(["mvi-table-column-item", { center: _ctx.center }])
                          }, [
                            createVNode(unref(Tooltip), {
                              disabled: !column.ellipsis,
                              trigger: "hover",
                              placement: "bottom",
                              color: (_a = _ctx.tooltip) == null ? void 0 : _a.color,
                              "text-color": (_b = _ctx.tooltip) == null ? void 0 : _b.textColor,
                              "border-color": (_c = _ctx.tooltip) == null ? void 0 : _c.borderColor,
                              "show-triangle": (_d = _ctx.tooltip) == null ? void 0 : _d.showTriangle,
                              animation: (_e = _ctx.tooltip) == null ? void 0 : _e.animation,
                              "z-index": (_f = _ctx.tooltip) == null ? void 0 : _f.zIndex,
                              offset: (_g = _ctx.tooltip) == null ? void 0 : _g.offset,
                              timeout: (_h = _ctx.tooltip) == null ? void 0 : _h.timeout
                            }, {
                              title: withCtx(() => [
                                createElementVNode("div", {
                                  innerHTML: dataFormat.value(row2, column)
                                }, null, 8, _hoisted_7$1)
                              ]),
                              default: withCtx(() => [
                                createElementVNode("div", {
                                  innerHTML: dataFormat.value(row2, column),
                                  class: normalizeClass({ ellipsis: column.ellipsis })
                                }, null, 10, _hoisted_8$1)
                              ]),
                              _: 2
                            }, 1032, ["disabled", "color", "text-color", "border-color", "show-triangle", "animation", "z-index", "offset", "timeout"])
                          ], 2))
                        ])
                      ], 6);
                    }), 256))
                  ], 2);
                }), 256))
              ])) : (openBlock(), createElementBlock("div", _hoisted_9, toDisplayString(_ctx.noDataMsg), 1))
            ], 64))
          ], 6)
        ], 4)
      ], 2);
    };
  }
});
const table = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__scopeId", "data-v-8603a047"]]);
const Table = withInstall(table);
const TabsProps = {
  //tabs类型
  type: {
    type: String,
    default: "default",
    validator(value) {
      return ["default", "card"].includes(value);
    }
  },
  //激活的tab序列
  modelValue: {
    type: Number,
    default: 0
  },
  //tab切换动画
  animation: {
    type: String,
    default: "none",
    validator(value) {
      return ["none", "slide", "fade"].includes(value);
    }
  },
  //当animation为slide或者fade时的动画时长
  timeout: {
    type: Number,
    default: 500
  },
  //当标题过长时是否省略，标题栏最大长度只有1/n，n表示标题栏个数
  ellipsis: {
    type: Boolean,
    default: true
  },
  //type="default"下是否显示选项卡头部下边框
  border: {
    type: Boolean,
    default: false
  },
  //type="default"下布局方式
  flex: {
    type: String,
    default: "space-between"
  },
  //type="default"下每个选项卡头部距离左侧的距离
  offset: {
    type: String,
    default: "0"
  },
  //激活颜色
  activeColor: {
    type: String,
    default: null
  }
};
const _hoisted_1$2 = { class: "mvi-tabs" };
const _hoisted_2$2 = ["onClick", "disabled"];
const _hoisted_3$2 = ["innerHTML"];
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-tabs"
  },
  __name: "tabs",
  props: TabsProps,
  emits: ["update:modelValue", "change"],
  setup(__props, { expose: __expose, emit: __emit }) {
    const instance = getCurrentInstance();
    componentIsMatch(instance, "m-tab", ["Tabs", "Tab"]);
    const props = __props;
    const emits = __emit;
    const children = ref([]);
    const slideLeft = ref(0);
    const slideWidth = ref(0);
    const current = ref(props.modelValue);
    const headersRef = ref(null);
    const contentRef = ref(null);
    const sliderStyle = computed(() => {
      let style = {};
      if (props.animation == "slide" || props.animation == "fade") {
        style.transition = "left " + props.timeout + "ms,width " + props.timeout + "ms";
      }
      if (props.activeColor) {
        style.background = props.activeColor;
      }
      style.width = slideWidth.value + "px";
      style.left = slideLeft.value + "px";
      return style;
    });
    const headersStyle = computed(() => {
      let style = {};
      if (props.flex && props.type == "default") {
        style.justifyContent = props.flex;
      }
      if (props.type == "card" && props.activeColor) {
        style.borderColor = props.activeColor;
      }
      return style;
    });
    const headerStyle = computed(() => {
      return (index) => {
        let style = {};
        if (props.offset && index != 0 && props.type == "default") {
          style.marginLeft = props.offset;
        }
        if (props.activeColor) {
          style.borderColor = props.activeColor;
          if (props.modelValue == index) {
            if (props.type == "default") {
              style.color = props.activeColor;
            } else {
              style.background = props.activeColor;
            }
          }
        }
        style.maxWidth = `calc(100% / ${children.value.length})`;
        return style;
      };
    });
    const parseIcon = computed(() => {
      return (params) => {
        let icon2 = {
          spin: false,
          type: "",
          url: "",
          color: "",
          size: ""
        };
        if (obj.common.isObject(params)) {
          if (typeof params.spin == "boolean") {
            icon2.spin = params.spin;
          }
          if (typeof params.type == "string") {
            icon2.type = params.type;
          }
          if (typeof params.url == "string") {
            icon2.url = params.url;
          }
          if (typeof params.color == "string") {
            icon2.color = params.color;
          }
          if (typeof params.size == "string") {
            icon2.size = params.size;
          }
        } else if (typeof params == "string") {
          icon2.type = params;
        }
        return icon2;
      };
    });
    const setHeight = () => {
      if (children.value[current.value] && contentRef.value) {
        contentRef.value.style.height = children.value[current.value].proxy.$el.offsetHeight + "px";
      }
    };
    const setSlider = () => {
      if (props.type == "card") {
        return;
      }
      if (!headersRef.value) {
        return;
      }
      slideWidth.value = parseFloat(obj.element.getCssStyle(headersRef.value.querySelector(".mvi-tab-header.active"), "width"));
      slideLeft.value = obj.element.getElementPoint(headersRef.value.querySelector(".mvi-tab-header.active"), headersRef.value).left;
    };
    const clickHeader = (item, index) => {
      if (item.props.disabled) {
        return;
      }
      if (props.modelValue == index) {
        return;
      }
      emits("update:modelValue", index);
      emits("change", index);
    };
    const to = (newValue, oldValue) => {
      for (let i = 0; i < children.value.length; i++) {
        children.value[i].exposed.show = false;
        if (newValue < oldValue) {
          children.value[i].exposed.back = true;
        } else {
          children.value[i].exposed.back = false;
        }
      }
      if (children.value[newValue]) {
        children.value[newValue].exposed.show = true;
        if (!children.value[newValue].exposed.firstShow) {
          children.value[newValue].exposed.firstShow = true;
        }
      }
      nextTick(() => {
        current.value = newValue;
        setHeight();
        setSlider();
      });
    };
    watch(
      () => props.modelValue,
      (newValue, oldValue) => {
        to(newValue, oldValue);
      }
    );
    onMounted(() => {
      nextTick(() => {
        setSlider();
      });
      setHeight();
      obj.event.on(window, `resize.tabs_${instance.uid}`, setHeight);
    });
    onBeforeUnmount(() => {
      obj.event.off(window, `resize.tabs_${instance.uid}`);
    });
    provide("tabs", instance);
    provide("tabChildren", children);
    __expose({
      setHeight,
      setSlider,
      to
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", _hoisted_1$2, [
        createElementVNode("div", {
          ref_key: "headersRef",
          ref: headersRef,
          class: normalizeClass(["mvi-tabs-header", { card: _ctx.type == "card", border: _ctx.type == "default" && _ctx.border }]),
          style: normalizeStyle(headersStyle.value)
        }, [
          _ctx.type == "default" ? (openBlock(), createElementBlock("div", {
            key: 0,
            class: "mvi-tabs-slider",
            style: normalizeStyle(sliderStyle.value)
          }, null, 4)) : createCommentVNode("", true),
          (openBlock(true), createElementBlock(Fragment, null, renderList(children.value, (item, index) => {
            return openBlock(), createElementBlock("div", {
              class: normalizeClass(["mvi-tab-header", { active: _ctx.modelValue == index, ellipsis: _ctx.ellipsis }]),
              onClick: ($event) => clickHeader(item, index),
              style: normalizeStyle(headerStyle.value(index)),
              disabled: item.props.disabled || null
            }, [
              item.props.placement == "left" && (parseIcon.value(item.props.icon).type || parseIcon.value(item.props.icon).url) ? (openBlock(), createBlock(unref(Icon), {
                key: 0,
                class: normalizeClass(["mvi-tab-icon", { left: !!item.props.title }]),
                type: parseIcon.value(item.props.icon).type,
                url: parseIcon.value(item.props.icon).url,
                spin: parseIcon.value(item.props.icon).spin,
                size: parseIcon.value(item.props.icon).size,
                color: parseIcon.value(item.props.icon).color
              }, null, 8, ["class", "type", "url", "spin", "size", "color"])) : createCommentVNode("", true),
              item.props.title ? (openBlock(), createElementBlock("span", {
                key: 1,
                class: "mvi-tab-header-text",
                innerHTML: item.props.title
              }, null, 8, _hoisted_3$2)) : createCommentVNode("", true),
              item.props.placement == "right" && (parseIcon.value(item.props.icon).type || parseIcon.value(item.props.icon).url) ? (openBlock(), createBlock(unref(Icon), {
                key: 2,
                class: normalizeClass(["mvi-tab-icon", { right: !!item.props.title }]),
                type: parseIcon.value(item.props.icon).type,
                url: parseIcon.value(item.props.icon).url,
                spin: parseIcon.value(item.props.icon).spin,
                size: parseIcon.value(item.props.icon).size,
                color: parseIcon.value(item.props.icon).color
              }, null, 8, ["class", "type", "url", "spin", "size", "color"])) : createCommentVNode("", true)
            ], 14, _hoisted_2$2);
          }), 256))
        ], 6),
        createElementVNode("div", {
          class: "mvi-tabs-content",
          ref_key: "contentRef",
          ref: contentRef
        }, [
          renderSlot(_ctx.$slots, "default", {}, void 0, true)
        ], 512)
      ]);
    };
  }
});
const tabs = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-1c93a6e8"]]);
const Tabs = withInstall(tabs);
const TabProps = {
  //标题
  title: {
    type: String,
    default: ""
  },
  //标题侧边显示的图标
  icon: {
    type: [String, Object],
    default: null
  },
  //是否禁用选项卡
  disabled: {
    type: Boolean,
    default: false
  },
  //图标位置
  placement: {
    type: String,
    default: "left",
    validator(value) {
      return ["left", "right"].includes(value);
    }
  }
};
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-tab"
  },
  __name: "tab",
  props: TabProps,
  setup(__props, { expose: __expose }) {
    const instance = getCurrentInstance();
    const tabs2 = inject("tabs", null);
    const tabChildren = inject("tabChildren", null);
    parentIsMatch(tabChildren, tabs2, "m-tabs", ["Tabs", "Tab"]);
    tabChildren.value.push(instance);
    const back = ref(false);
    const tabStyle = computed(() => {
      let style = {};
      if (tabs2.props.animation == "slide") {
        style.transition = "left " + tabs2.props.timeout + "ms,opacity " + tabs2.props.timeout + "ms";
      } else if (tabs2.props.animation == "fade") {
        style.transition = "opacity " + tabs2.props.timeout + "ms";
      }
      return style;
    });
    const tabIndex = computed(() => {
      return tabChildren.value.findIndex((vm) => {
        return obj.common.equal(vm.uid, instance.uid);
      });
    });
    const show = ref(tabs2.props.modelValue == tabIndex.value);
    const firstShow = ref(tabs2.props.modelValue == tabIndex.value);
    onBeforeUnmount(() => {
      if (tabChildren && tabChildren.value) {
        tabChildren.value.splice(tabIndex.value, 1);
      }
      if (tabs2) {
        if (tabs2.props.modelValue > 0) {
          tabs2.emit("update:modelValue", tabs2.props.modelValue - 1);
          tabs2.emit("change", tabs2.props.modelValue - 1);
        } else {
          tabs2.exposed.to(0, 0);
        }
      }
    });
    __expose(
      reactive({
        show,
        firstShow,
        back
      })
    );
    return (_ctx, _cache) => {
      return openBlock(), createBlock(Transition, {
        name: "mvi-tab-" + unref(tabs2).props.animation + (back.value ? "-back" : "")
      }, {
        default: withCtx(() => [
          firstShow.value ? withDirectives((openBlock(), createElementBlock("div", {
            key: 0,
            class: "mvi-tab",
            style: normalizeStyle(tabStyle.value)
          }, [
            renderSlot(_ctx.$slots, "default", {}, void 0, true)
          ], 4)), [
            [vShow, show.value]
          ]) : createCommentVNode("", true)
        ]),
        _: 3
      }, 8, ["name"]);
    };
  }
});
const tab = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-a578100d"]]);
const Tab = withInstall(tab);
var __defProp2 = Object.defineProperty;
var __defNormalProp2 = (obj2, key, value) => key in obj2 ? __defProp2(obj2, key, { enumerable: true, configurable: true, writable: true, value }) : obj2[key] = value;
var __publicField2 = (obj2, key, value) => {
  __defNormalProp2(obj2, typeof key !== "symbol" ? key + "" : key, value);
  return value;
};
class Clip {
  constructor(options) {
    __publicField2(this, "id");
    __publicField2(this, "style");
    __publicField2(this, "value");
    __publicField2(this, "speed");
    __publicField2(this, "free", false);
    __publicField2(this, "interval", 0);
    __publicField2(this, "$options");
    __publicField2(this, "$unit");
    __publicField2(this, "$requestAnimationFrame");
    __publicField2(this, "state", 0);
    __publicField2(this, "$events", [
      //动画开始事件
      {
        name: "start",
        handler: function() {
        }
      },
      //动画结束事件
      {
        name: "complete",
        handler: function() {
        }
      },
      //动画更新之前
      {
        name: "beforeUpdate",
        handler: function() {
        }
      },
      //动画更新事件
      {
        name: "update",
        handler: function() {
        }
      },
      //动画停止事件
      {
        name: "stop",
        handler: function() {
        }
      },
      //动画重置事件
      {
        name: "reset",
        handler: function() {
        }
      }
    ]);
    __publicField2(this, "$chainClip");
    __publicField2(this, "$type", 0);
    __publicField2(this, "$initValue");
    __publicField2(this, "$parent");
    __publicField2(this, "$timeStamp", 0);
    if (!options) {
      this.free = true;
    } else if (typeof options == "object" && options) {
      if (typeof options.free == "boolean") {
        this.free = options.free;
      } else {
        this.free = false;
      }
      if (!this.free) {
        if (typeof options.style == "string" && options.style) {
          this.style = options.style;
        } else {
          throw new TypeError("The style argument should be a string");
        }
        if (typeof options.value == "number") {
          this.value = options.value;
          this.$unit = null;
        } else if (typeof options.value == "string" && options.value) {
          this.value = parseFloat(options.value);
          if (options.value.endsWith("px")) {
            this.$unit = "px";
          } else if (options.value.endsWith("rem")) {
            this.$unit = "rem";
          } else if (options.value.endsWith("em")) {
            this.$unit = "em";
          } else {
            throw new Error("Currently, only attribute values of px, rem, and em units are supported");
          }
        } else {
          throw new TypeError("The value argument should be a number or string");
        }
        if (typeof options.speed == "number") {
          this.speed = options.speed;
        } else {
          throw new TypeError("The speed argument should be a number");
        }
      }
    } else {
      throw new Error("The construction parameter of the clip must be a non-null object");
    }
    this.$requestAnimationFrame = this.__getRequestAnimationFrame();
  }
  /**
   * 执行动画
   */
  start() {
    if (!this.$parent || !this.$parent.$el) {
      throw new ReferenceError("The clip has not been added to the animator");
    }
    if (!this.free) {
      let oldValue = this.__getUnitCssValue();
      if (this.speed > 0 && oldValue >= this.value) {
        return this;
      }
      if (this.speed < 0 && oldValue <= this.value) {
        return this;
      }
    }
    if (this.state == 1 || this.state == 3) {
      return this;
    }
    this.$timeStamp = Date.now();
    this.interval = 0;
    this.state = 1;
    this.$parent.$options.start.apply(this.$parent, [this, this.$parent.$el]);
    this.__emit("start");
    let doFun = () => {
      if (this.state != 1) {
        return;
      }
      let now = Date.now();
      this.interval = now - this.$timeStamp;
      this.$timeStamp = now;
      if (this.free) {
        this.$parent.$options.beforeUpdate.apply(this.$parent, [this, this.$parent.$el]);
        this.__emit("beforeUpdate");
        this.$parent.$options.update.apply(this.$parent, [this, this.$parent.$el]);
        this.__emit("update");
        this.$requestAnimationFrame.apply(window, [doFun]);
      } else {
        let currentValue = this.__getUnitCssValue();
        this.$parent.$options.beforeUpdate.apply(this.$parent, [this, this.$parent.$el, this.style, currentValue]);
        this.__emit("beforeUpdate", [this.style, currentValue]);
        let newValue = currentValue + this.speed;
        if (this.$unit) {
          this.$parent.$el.style.setProperty(this.style, newValue + this.$unit, "important");
        } else {
          this.$parent.$el.style.setProperty(this.style, newValue + "", "important");
        }
        this.$parent.$options.update.apply(this.$parent, [this, this.$parent.$el, this.style, newValue]);
        this.__emit("update", [this.style, newValue]);
        if (this.speed > 0 && newValue >= this.value || this.speed < 0 && newValue <= this.value) {
          if (this.$unit) {
            this.$parent.$el.style.setProperty(this.style, this.value + this.$unit, "important");
          } else {
            this.$parent.$el.style.setProperty(this.style, this.value + "", "important");
          }
          this.$timeStamp = 0;
          this.interval = 0;
          this.state = 3;
          this.$parent.$options.complete.apply(this.$parent, [this, this.$parent.$el]);
          this.__emit("complete");
          if (this.$chainClip) {
            if (this.$parent.hasClip(this.$chainClip)) {
              this.$parent.removeClip(this.$chainClip).addClip(this.$chainClip);
            } else {
              this.$parent.addClip(this.$chainClip);
            }
            this.$chainClip.start();
          }
        } else {
          this.$requestAnimationFrame.apply(window, [doFun]);
        }
      }
    };
    this.$requestAnimationFrame.apply(window, [doFun]);
    return this;
  }
  /**
   * 停止动画
   */
  stop() {
    if (!this.$parent || !this.$parent.$el) {
      throw new ReferenceError("The clip has not been added to the animator");
    }
    if (this.state != 1) {
      return this;
    }
    this.$timeStamp = 0;
    this.interval = 0;
    this.state = 2;
    this.$parent.$options.stop.apply(this.$parent, [this, this.$parent.$el]);
    this.__emit("stop");
    return this;
  }
  /**
   * 重置动画
   */
  reset(reStoreStyle) {
    if (!this.$parent || !this.$parent.$el) {
      throw new ReferenceError("The clip has not been added to the animator");
    }
    if (this.state == 0) {
      return this;
    }
    if (typeof reStoreStyle != "boolean") {
      reStoreStyle = true;
    }
    this.$timeStamp = 0;
    this.interval = 0;
    this.state = 0;
    if (!this.free && reStoreStyle) {
      this.$parent.$el.style.setProperty(this.style, this.$initValue + "", "important");
    }
    this.$parent.$options.reset.apply(this.$parent, [this, this.$parent.$el]);
    this.__emit("reset");
    if (this.$type == 1) {
      this.$parent.removeClip(this);
    }
    return this;
  }
  /**
   * 连续执行动画
   * @param {Object} clip
   */
  chain(clip) {
    if (!clip) {
      throw new TypeError("The parameter is not defined");
    }
    if (!(clip instanceof Clip)) {
      throw new TypeError("The parameter is not a Clip instance");
    }
    if (clip.$parent) {
      throw new ReferenceError("The clip has been added to an animator instance and cannot be passed as a chain argument");
    }
    clip.$type = 1;
    this.$chainClip = clip;
    return clip;
  }
  /**
   * 主动触发完成事件
   */
  emitComplete() {
    if (!this.free) {
      return;
    }
    if (this.state == 0 || this.state == 3) {
      return;
    }
    this.state = 3;
    this.$parent.$options.complete.apply(this.$parent, [this, this.$parent.$el]);
    this.__emit("complete");
    if (this.$chainClip) {
      if (this.$parent.hasClip(this.$chainClip)) {
        this.$parent.removeClip(this.$chainClip).addClip(this.$chainClip);
      } else {
        this.$parent.addClip(this.$chainClip);
      }
      this.$chainClip.start();
    }
  }
  /**
   * 自定义事件执行
   */
  on(eventName, handler) {
    let event2 = this.__getEvent(eventName);
    if (event2) {
      event2.handler = handler;
    } else {
      throw new Error(eventName + " is an illegal event");
    }
    return this;
  }
  /**
   * requestAnimationFrame兼容性封装
   */
  __getRequestAnimationFrame() {
    let animation = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame;
    if (!animation) {
      let lastTime = 0;
      animation = function(callback) {
        let currTime = Date.now();
        let timeToCall = Math.max(0, 1e3 / 60 - (currTime - lastTime));
        window.setTimeout(callback, timeToCall);
        lastTime = currTime + timeToCall;
      };
    }
    return animation;
  }
  /**
   * 触发自定义事件
   * @param {Object} eventName
   * @param {Object} params
   */
  __emit(eventName, params) {
    let event2 = this.__getEvent(eventName);
    if (event2) {
      if (params) {
        event2.handler.apply(this, [this.$parent.$el, ...params]);
      } else {
        event2.handler.apply(this, [this.$parent.$el]);
      }
    }
  }
  /**
   * 获取事件数组中指定事件
   * @param {Object} eventName
   */
  __getEvent(eventName) {
    let arr = this.$events.filter((event2) => {
      return event2.name == eventName;
    });
    return arr[0];
  }
  /**
   * 获取元素基于单位$unit的值
   */
  __getUnitCssValue() {
    let value = parseFloat(this.__getCssStyle(this.$parent.$el, this.style));
    if (this.$unit == "rem") {
      return this.__px2rem(value);
    } else if (this.$unit == "em") {
      return this.__px2em(this.$parent.$el, value);
    }
    return value;
  }
  /**
   * 获取元素指定样式值
   * @param {Object} el
   * @param {Object} cssName
   */
  __getCssStyle(el, cssName) {
    if (typeof cssName == "string") {
      let cssText = "";
      if (document.defaultView && document.defaultView.getComputedStyle) {
        cssText = document.defaultView.getComputedStyle(el)[cssName];
      } else {
        cssText = el.currentStyle[cssName];
      }
      return cssText;
    }
    return null;
  }
  /**
   * px转为rem
   * @param {Object} number
   */
  __px2rem(number2) {
    let fs = this.__getCssStyle(document.documentElement, "font-size");
    return number2 / parseFloat(fs);
  }
  /**
   * px转为em
   * @param {Object} el
   * @param {Object} number
   */
  __px2em(el, number2) {
    let parentNode = el.parentNode || el.parentElement;
    let fs = this.__getCssStyle(parentNode, "font-size");
    return number2 / parseFloat(fs);
  }
}
class Animator {
  //构造方法
  constructor(el, options) {
    __publicField2(this, "$el");
    __publicField2(this, "$options");
    __publicField2(this, "clips");
    if (typeof el == "string" && el) {
      this.$el = document.body.querySelector(el);
    } else {
      this.$el = el;
    }
    this.$options = options;
    this.clips = [];
    if (!this.$el) {
      throw new ReferenceError("The first construction argument of an animator should be an element or selector");
    }
    if (!(this.$el instanceof Node) || this.$el.nodeType !== 1) {
      throw new TypeError("The first construction argument of an animator should be an element or selector");
    }
    if (typeof this.$options != "object" || !this.$options) {
      this.$options = {};
    }
    if (typeof this.$options.start != "function") {
      this.$options.start = function() {
      };
    }
    if (typeof this.$options.complete != "function") {
      this.$options.complete = function() {
      };
    }
    if (typeof this.$options.beforeUpdate != "function") {
      this.$options.beforeUpdate = function() {
      };
    }
    if (typeof this.$options.update != "function") {
      this.$options.update = function() {
      };
    }
    if (typeof this.$options.stop != "function") {
      this.$options.stop = function() {
      };
    }
    if (typeof this.$options.reset != "function") {
      this.$options.reset = function() {
      };
    }
  }
  /**
   * 判断是否包含某个clip
   */
  hasClip(clip) {
    if (!clip.$parent || typeof clip.id != "number" || isNaN(clip.id)) {
      return false;
    }
    return this.clips.some((item) => {
      return item.id === clip.id;
    });
  }
  /**
   * 将clip添加到队列
   */
  addClip(clip) {
    if (!clip) {
      throw new TypeError("Parameter does not exist");
    }
    if (!(clip instanceof Clip)) {
      throw new TypeError("The parameter is not a Clip instance");
    }
    if (!this.hasClip(clip) && clip.$parent) {
      throw new Error("The clip has been added to other animator");
    }
    if (this.hasClip(clip)) {
      throw new Error("The clip has been added to the animator");
    }
    if (this.clips.length == 0) {
      clip.id = 0;
    } else {
      let maxClipId = this.clips[0].id;
      clip.id = maxClipId + 1;
    }
    clip.$parent = this;
    if (!clip.free) {
      if (clip.$unit) {
        clip.$initValue = clip.__getUnitCssValue() + clip.$unit;
      } else {
        clip.$initValue = clip.__getUnitCssValue();
      }
    }
    this.clips.unshift(clip);
    return this;
  }
  /**
   * 将clip移出队列
   * @param {Object} clip
   */
  removeClip(clip) {
    if (!clip) {
      throw new TypeError("Parameter does not exist");
    }
    if (!(clip instanceof Clip)) {
      throw new TypeError("The parameter is not a Clip instance");
    }
    if (!clip.$parent || typeof clip.id != "number" || isNaN(clip.id)) {
      throw new Error("The clip has not been added to the animator");
    }
    if (!this.hasClip(clip)) {
      throw new Error("The clip does not belong to the animator");
    }
    this.clips = this.clips.filter((item) => {
      return item.id != clip.id;
    });
    clip.state = 0;
    clip.$timeStamp = 0;
    clip.interval = 0;
    if (!clip.free) {
      clip.$parent.$el.style.setProperty(clip.style, clip.$initValue + "", "important");
      clip.$initValue = void 0;
    }
    clip.$parent = void 0;
    clip.id = void 0;
    return this;
  }
  /**
   * 移除全部clip
   */
  removeAllClips() {
    let clips = [...this.clips];
    clips.forEach((clip) => {
      this.removeClip(clip);
    });
    return this;
  }
  /**
   * 获取正在运行的clip
   */
  getClips() {
    return this.clips.filter((clip) => {
      return clip.state == 1;
    });
  }
  /**
   * 获取停止状态的clip
   */
  getStopClips() {
    return this.clips.filter((clip) => {
      return clip.state == 2;
    });
  }
  /**
   * 获取已完成的clip
   */
  getCompleteClips() {
    return this.clips.filter((clip) => {
      return clip.state == 3;
    });
  }
  /**
   * 执行动画
   */
  start() {
    this.clips.forEach((clip) => {
      clip.start();
    });
    return this;
  }
  /**
   * 停止动画
   */
  stop() {
    this.clips.forEach((clip) => {
      clip.stop();
    });
    return this;
  }
  /**
   * 重置动画
   */
  reset(reStoreStyle) {
    this.clips.forEach((clip) => {
      clip.reset(reStoreStyle);
    });
    return this;
  }
}
const CarouselProps = {
  //当前轮播序列
  modelValue: {
    type: Number,
    default: 0
  },
  //是否自动轮播
  autoplay: {
    type: Boolean,
    default: false
  },
  //是否循环轮播
  loop: {
    type: Boolean,
    default: false
  },
  //自动轮播的切换速度
  speed: {
    type: Number,
    default: 500
  },
  //自定轮播的间隔
  interval: {
    type: Number,
    default: 3e3
  },
  //模式
  mode: {
    type: String,
    default: "slide",
    validator(value) {
      return ["slide", "fade"].includes(value);
    }
  },
  //分页指示器配置
  indicators: {
    type: [Boolean, Object],
    default: false
  },
  //前后控制器是否显示
  controls: {
    type: Boolean,
    default: false
  },
  //滑动模式下是否纵向轮播
  vertical: {
    type: Boolean,
    default: false
  },
  //滑动模式下是否可以通过手势触摸滑动
  touchable: {
    type: Boolean,
    default: true
  }
};
const _hoisted_1$1 = { class: "mvi-carousel" };
const _hoisted_2$1 = {
  key: 0,
  class: "mvi-carousel-fades"
};
const _hoisted_3$1 = {
  key: 1,
  class: "mvi-carousel-indicators"
};
const _hoisted_4$1 = ["onClick"];
const _sfc_main$3 = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-carousel"
  },
  __name: "carousel",
  props: CarouselProps,
  emits: ["update:modelValue", "change"],
  setup(__props, { expose: __expose, emit: __emit }) {
    const instance = getCurrentInstance();
    componentIsMatch(instance, "m-carousel-item", ["Carousel", "CarouselItem"]);
    const props = __props;
    const emits = __emit;
    const children = ref([]);
    provide("carousel", instance);
    provide("carouselItemChildren", children);
    const autoplayTimer = ref(null);
    const slidesRef = ref(null);
    const slideAnimation = ref(null);
    const currentSlideValue = ref(0);
    const initTouchPoint = ref(0);
    const everyTouchPoint = ref(0);
    const touchTotal = ref(0);
    const lazyUpdate = ref(false);
    const clipInterval = ref(1e3 / 60);
    const isMouseDown = ref(false);
    const cmpIndicators = computed(() => {
      let indicators = {
        show: false,
        active: "",
        inactive: ""
      };
      if (typeof props.indicators == "boolean") {
        indicators.show = props.indicators;
      } else if (obj.common.isObject(props.indicators)) {
        if (typeof props.indicators.show == "boolean") {
          indicators.show = props.indicators.show;
        }
        if (typeof props.indicators.active == "string" && props.indicators.active) {
          indicators.active = props.indicators.active;
        }
        if (typeof props.indicators.inactive == "string" && props.indicators.inactive) {
          indicators.inactive = props.indicators.inactive;
        }
      }
      return indicators;
    });
    const slidesStyle = computed(() => {
      let style = {};
      if (props.vertical) {
        style.height = `calc(100% * ${children.value.length})`;
      } else {
        style.width = `calc(100% * ${children.value.length})`;
      }
      return style;
    });
    const publicChildren = computed(() => {
      if (props.mode == "slide" && props.loop) {
        return children.value.filter((child) => {
          return !child.attrs["is-cloned"];
        });
      }
      return children.value;
    });
    const carouselItemSize = computed(() => {
      if (!slidesRef.value) {
        return 0;
      }
      return (props.vertical ? slidesRef.value.offsetHeight : slidesRef.value.offsetWidth) / children.value.length;
    });
    const FirstCarouselItem = defineComponent(() => {
      return () => {
        if (props.loop && publicChildren.value.length) {
          const vnode = cloneVNode(publicChildren.value[0].vnode);
          return h(vnode, {
            //表示该组件是克隆的
            "is-cloned": true
          });
        }
        return null;
      };
    });
    const LastCarouselItem = defineComponent(() => {
      return () => {
        if (props.loop && publicChildren.value.length) {
          const vnode = publicChildren.value[publicChildren.value.length - 1].vnode;
          return h(vnode, {
            //表示该组件是克隆的
            "is-cloned": true
          });
        }
        return null;
      };
    });
    const setIndex = (val, reset = false) => {
      emits("update:modelValue", val);
      emits("change", val);
      if (reset && props.autoplay) {
        setAutoplay();
      }
    };
    const setAutoplay = () => {
      if (!props.autoplay) {
        return;
      }
      if (autoplayTimer.value) {
        clearInterval(autoplayTimer.value);
        autoplayTimer.value = null;
      }
      autoplayTimer.value = setInterval(() => {
        if (props.loop) {
          setIndex(props.modelValue == publicChildren.value.length - 1 ? 0 : props.modelValue + 1);
        } else {
          const isLast = props.modelValue == publicChildren.value.length - 1;
          if (isLast) {
            clearInterval(autoplayTimer.value);
            autoplayTimer.value = null;
            return;
          }
          setIndex(props.modelValue + 1);
        }
      }, props.interval + props.speed);
    };
    const setPrev = () => {
      if (props.loop) {
        setIndex(props.modelValue == 0 ? publicChildren.value.length - 1 : props.modelValue - 1, true);
      } else {
        if (props.modelValue == 0) {
          return;
        }
        setIndex(props.modelValue - 1, true);
      }
    };
    const setNext = () => {
      if (props.loop) {
        setIndex(props.modelValue == publicChildren.value.length - 1 ? 0 : props.modelValue + 1, true);
      } else {
        if (props.modelValue == publicChildren.value.length - 1) {
          return;
        }
        setIndex(props.modelValue + 1, true);
      }
    };
    const setSlideValue = (animation = false, value = void 0) => {
      return new Promise((resolve) => {
        if (!slidesRef.value) {
          return resolve();
        }
        if (!slideAnimation.value) {
          return resolve();
        }
        let slideValue = 0;
        if (value === void 0) {
          slideValue = -(props.loop ? props.modelValue + 1 : props.modelValue) * carouselItemSize.value;
        } else {
          slideValue = value;
        }
        const speed = Math.abs(currentSlideValue.value - slideValue) / (props.speed / clipInterval.value);
        const clip = new Clip({
          style: props.vertical ? "top" : "left",
          value: slideValue + "px",
          speed: animation ? currentSlideValue.value > slideValue ? -speed : speed : slideValue - currentSlideValue.value
        });
        clip.on("update", (_el, _style, value2) => {
          currentSlideValue.value = value2;
        });
        clip.on("complete", () => {
          resolve();
        });
        clip.on("stop", () => {
          resolve();
        });
        slideAnimation.value.stop();
        slideAnimation.value.addClip(clip);
        clip.start();
      });
    };
    const handleTouchstart = (e) => {
      if (props.touchable) {
        initTouchPoint.value = props.vertical ? e.targetTouches[0].pageY : e.targetTouches[0].pageX;
        everyTouchPoint.value = initTouchPoint.value;
        touchTotal.value = 0;
        if (slideAnimation.value) {
          slideAnimation.value.stop();
        }
      }
    };
    const handleTouchMove = (e) => {
      if (props.touchable) {
        if (e.cancelable) {
          e.preventDefault();
        }
        const point = props.vertical ? e.targetTouches[0].pageY : e.targetTouches[0].pageX;
        const moveTotal = point - initTouchPoint.value;
        if (Math.abs(moveTotal) >= carouselItemSize.value) {
          return;
        }
        touchTotal.value = moveTotal;
        currentSlideValue.value += point - everyTouchPoint.value;
        slidesRef.value.style[props.vertical ? "top" : "left"] = currentSlideValue.value + "px";
        everyTouchPoint.value = point;
      }
    };
    const handleTouchEnd = () => {
      if (props.touchable) {
        slideDone();
      }
    };
    const handleMouseDown = (e) => {
      if (props.touchable) {
        initTouchPoint.value = props.vertical ? e.pageY : e.pageX;
        everyTouchPoint.value = initTouchPoint.value;
        touchTotal.value = 0;
        if (slideAnimation.value) {
          slideAnimation.value.stop();
        }
        isMouseDown.value = true;
      }
    };
    const handleMouseMove = (e) => {
      if (props.touchable && isMouseDown.value) {
        if (e.cancelable) {
          e.preventDefault();
        }
        const point = props.vertical ? e.pageY : e.pageX;
        const moveTotal = point - initTouchPoint.value;
        if (Math.abs(moveTotal) >= carouselItemSize.value) {
          return;
        }
        touchTotal.value = moveTotal;
        currentSlideValue.value += point - everyTouchPoint.value;
        slidesRef.value.style[props.vertical ? "top" : "left"] = currentSlideValue.value + "px";
        everyTouchPoint.value = point;
      }
    };
    const handleMouseUp = () => {
      if (props.touchable && isMouseDown.value) {
        isMouseDown.value = false;
        slideDone();
      }
    };
    const slideDone = () => {
      if (!slidesRef.value || props.mode != "slide") {
        return;
      }
      if (props.loop) {
        let num = 0;
        if (Math.abs(touchTotal.value) > carouselItemSize.value / 3) {
          num = touchTotal.value < 0 ? num + 1 : num - 1;
        }
        if (num == 0) {
          setSlideValue(true, -(props.modelValue + 1) * carouselItemSize.value);
        } else {
          if (props.modelValue + num == -1) {
            setSlideValue(true, 0).then(() => {
              lazyUpdate.value = true;
              setIndex(publicChildren.value.length - 1, true);
              setSlideValue(false, -(children.value.length - 2) * carouselItemSize.value).then(() => {
                lazyUpdate.value = false;
              });
            });
          } else if (props.modelValue + num == publicChildren.value.length) {
            setSlideValue(true, -(children.value.length - 1) * carouselItemSize.value).then(() => {
              lazyUpdate.value = true;
              setIndex(0, true);
              setSlideValue(false, -carouselItemSize.value).then(() => {
                lazyUpdate.value = false;
              });
            });
          } else {
            setIndex(props.modelValue + num, true);
          }
        }
      } else {
        if (currentSlideValue.value > 0) {
          setSlideValue(true, 0);
        } else if (currentSlideValue.value < -((children.value.length - 1) * carouselItemSize.value)) {
          setSlideValue(true, -((children.value.length - 1) * carouselItemSize.value));
        } else {
          let num = 0;
          if (Math.abs(touchTotal.value) > carouselItemSize.value / 3) {
            num = touchTotal.value < 0 ? num + 1 : num - 1;
          }
          if (num == 0) {
            setSlideValue(true, -props.modelValue * carouselItemSize.value);
          } else {
            setIndex(props.modelValue + num, true);
          }
        }
      }
    };
    const updateClipInterval = () => {
      if (!!window.requestAnimationFrame) {
        let now = window.performance.now();
        const render = () => {
          const nextFrame = window.performance.now();
          clipInterval.value = nextFrame - now;
          now = nextFrame;
          window.requestAnimationFrame(render);
        };
        render();
      }
    };
    watch(
      () => props.modelValue,
      (newVal, oldVal) => {
        if (props.mode == "slide" && !lazyUpdate.value) {
          if (props.loop && oldVal == publicChildren.value.length - 1 && newVal == 0) {
            setSlideValue(false, 0).then(() => {
              setSlideValue(true);
            });
          } else if (props.loop && oldVal == 0 && newVal == publicChildren.value.length - 1) {
            setSlideValue(false, -(children.value.length - 1) * carouselItemSize.value).then(() => {
              setSlideValue(true);
            });
          } else {
            setSlideValue(true);
          }
        }
      }
    );
    watch(
      () => slidesRef.value,
      (newVal) => {
        if (newVal) {
          nextTick(() => {
            currentSlideValue.value = -(props.loop ? props.modelValue + 1 : props.modelValue) * carouselItemSize.value;
            slidesRef.value.style[props.vertical ? "top" : "left"] = currentSlideValue.value + "px";
            if (slideAnimation.value) {
              slideAnimation.value.removeAllClips();
            } else {
              slideAnimation.value = new Animator(newVal, {});
            }
          });
        }
      }
    );
    watch(
      () => props.autoplay,
      (newVal) => {
        if (newVal) {
          setAutoplay();
        } else {
          if (autoplayTimer.value) {
            clearInterval(autoplayTimer.value);
            autoplayTimer.value = null;
          }
        }
      }
    );
    updateClipInterval();
    onMounted(() => {
      nextTick(() => {
        obj.event.on(document.documentElement, `mousemove.carousel_${instance.uid}`, handleMouseMove);
        obj.event.on(document.documentElement, `mouseup.carousel_${instance.uid}`, handleMouseUp);
        if (props.autoplay) {
          setAutoplay();
        }
      });
    });
    onBeforeUnmount(() => {
      obj.event.off(document.documentElement, `mousemove.carousel_${instance.uid} mouseup.carousel_${instance.uid}`);
      if (slideAnimation.value) {
        slideAnimation.value.stop();
      }
      if (autoplayTimer.value) {
        clearInterval(autoplayTimer.value);
        autoplayTimer.value = null;
      }
    });
    __expose({
      setPrev,
      setNext
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", _hoisted_1$1, [
        _ctx.mode == "fade" ? (openBlock(), createElementBlock("div", _hoisted_2$1, [
          renderSlot(_ctx.$slots, "default", {}, void 0, true)
        ])) : _ctx.mode == "slide" ? (openBlock(), createElementBlock("div", {
          key: 1,
          class: normalizeClass(["mvi-carousel-slides", { vertical: _ctx.vertical }]),
          ref_key: "slidesRef",
          ref: slidesRef,
          style: normalizeStyle(slidesStyle.value),
          onTouchstart: handleTouchstart,
          onTouchmove: handleTouchMove,
          onTouchend: handleTouchEnd,
          onMousedown: handleMouseDown
        }, [
          createVNode(unref(LastCarouselItem)),
          renderSlot(_ctx.$slots, "default", {}, void 0, true),
          createVNode(unref(FirstCarouselItem))
        ], 38)) : createCommentVNode("", true),
        cmpIndicators.value.show ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
          _ctx.$slots.indicators ? renderSlot(_ctx.$slots, "indicators", {
            key: 0,
            total: publicChildren.value.length
          }, void 0, true) : (openBlock(), createElementBlock("div", _hoisted_3$1, [
            (openBlock(true), createElementBlock(Fragment, null, renderList(publicChildren.value.length, (_item, index) => {
              return openBlock(), createElementBlock("div", {
                class: normalizeClass(["mvi-carousel-indicator", { current: props.modelValue == index }]),
                style: normalizeStyle({ background: props.modelValue == index ? cmpIndicators.value.active : cmpIndicators.value.inactive }),
                onClick: ($event) => setIndex(index, true)
              }, null, 14, _hoisted_4$1);
            }), 256))
          ]))
        ], 64)) : createCommentVNode("", true),
        _ctx.controls ? (openBlock(), createElementBlock(Fragment, { key: 3 }, [
          _ctx.$slots.controls ? renderSlot(_ctx.$slots, "controls", {
            key: 0,
            total: publicChildren.value.length
          }, void 0, true) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
            createElementVNode("div", {
              onClick: setPrev,
              class: "mvi-carousel-controls controls-back"
            }, [
              createVNode(unref(Icon), { type: "angle-left" })
            ]),
            createElementVNode("div", {
              onClick: setNext,
              class: "mvi-carousel-controls controls-forward"
            }, [
              createVNode(unref(Icon), { type: "angle-right" })
            ])
          ], 64))
        ], 64)) : createCommentVNode("", true)
      ]);
    };
  }
});
const carousel = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-7505054f"]]);
const Carousel = withInstall(carousel);
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-carousel-item",
    inheritAttrs: false
  },
  __name: "carousel-item",
  setup(__props) {
    const instance = getCurrentInstance();
    const carousel2 = inject("carousel", null);
    const carouselItemChildren = inject("carouselItemChildren", null);
    parentIsMatch(carouselItemChildren, carousel2, "m-carousel", ["Carousel", "CarouselItem"]);
    carouselItemChildren.value.push(instance);
    const carouselItemStyle = computed(() => {
      const style = {};
      if (carousel2.props.mode == "fade") {
        style.transition = `opacity ${carousel2.props.speed}ms linear`;
      }
      if (carousel2.props.mode == "slide") {
        if (carousel2.props.vertical) {
          style.height = `calc(100% / ${carouselItemChildren.value.length})`;
        } else {
          style.width = `calc(100% / ${carouselItemChildren.value.length})`;
        }
      }
      return style;
    });
    const itemIndex = computed(() => {
      return carouselItemChildren.value.findIndex((vm) => {
        return vm.uid == instance.uid;
      });
    });
    onBeforeUnmount(() => {
      if (carouselItemChildren && carouselItemChildren.value) {
        carouselItemChildren.value.splice(itemIndex.value, 1);
      }
    });
    return (_ctx, _cache) => {
      return unref(carousel2).props.mode == "fade" ? (openBlock(), createBlock(Transition, {
        key: 0,
        name: "carousel-fade"
      }, {
        default: withCtx(() => [
          withDirectives(createElementVNode("div", {
            class: "mvi-carousel-item fade",
            style: normalizeStyle(carouselItemStyle.value)
          }, [
            renderSlot(_ctx.$slots, "default", {}, void 0, true)
          ], 4), [
            [vShow, unref(carousel2).props.modelValue == itemIndex.value]
          ])
        ]),
        _: 3
      })) : unref(carousel2).props.mode == "slide" ? (openBlock(), createElementBlock("div", {
        key: 1,
        class: "mvi-carousel-item",
        style: normalizeStyle(carouselItemStyle.value)
      }, [
        renderSlot(_ctx.$slots, "default", {}, void 0, true)
      ], 4)) : createCommentVNode("", true);
    };
  }
});
const carouselItem = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-721d6f08"]]);
const CarouselItem = withInstall(carouselItem);
const RichImageProps = {
  //图片地址
  src: {
    type: String,
    default: ""
  },
  //加载图标
  loadIcon: {
    type: [String, Object],
    default: null
  },
  //失败图标
  errorIcon: {
    type: [String, Object],
    default: null
  },
  //最大缩放值
  maxScale: {
    type: Number,
    default: 3
  },
  //最小缩放值
  minScale: {
    type: Number,
    default: 0.3
  }
};
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-rich-image"
  },
  __name: "rich-image",
  props: RichImageProps,
  emits: ["double-touchstart", "double-touchend", "translate-touchstart", "translate-touchend", "translate-mousedown", "translate-mouseup", "reset", "only-click"],
  setup(__props, { expose: __expose, emit: __emit }) {
    const instance = getCurrentInstance();
    const props = __props;
    const emits = __emit;
    const doubleTouch = ref({
      is: false,
      spacing: 0
    });
    const scale = ref(1);
    const translateX = ref(0);
    const translateY = ref(0);
    const rotate = ref(0);
    const imageMovePoint = ref(null);
    const imageCanMove = ref(false);
    const downPoint = ref(null);
    const upPoint = ref(null);
    const imageCoverRect = ref({
      left: 0,
      top: 0,
      right: 0,
      bottom: 0
    });
    const isTriggerDouble = ref(false);
    const elRef = ref(null);
    const imgRef = ref(null);
    const imgStyle = computed(() => {
      return {
        transform: `scale(${scale.value}) translate(${translateX.value}px,${translateY.value}px) rotate(${rotate.value}deg)`
      };
    });
    const leftRotate = () => {
      translateX.value = 0;
      translateY.value = 0;
      scale.value = 1;
      imageCoverRect.value = getImageCoverData();
      rotate.value -= 90;
    };
    const rightRotate = () => {
      translateX.value = 0;
      translateY.value = 0;
      scale.value = 1;
      imageCoverRect.value = getImageCoverData();
      rotate.value += 90;
    };
    const scaleUp = () => {
      if (scale.value < props.maxScale) {
        translateX.value = 0;
        translateY.value = 0;
        scale.value = obj.number.add(scale.value, 0.1);
        imageCoverRect.value = getImageCoverData();
      }
    };
    const scaleDown = () => {
      if (scale.value > props.minScale) {
        translateX.value = 0;
        translateY.value = 0;
        scale.value = obj.number.subtract(scale.value, 0.1);
        imageCoverRect.value = getImageCoverData();
      }
    };
    const reset = () => {
      scale.value = 1;
      imageCoverRect.value = getImageCoverData();
      translateX.value = 0;
      translateY.value = 0;
      rotate.value = 0;
      emits("reset");
    };
    const getPointSpacing = (pointA, pointB) => {
      let x = pointB.pageX - pointA.pageX;
      let y = pointB.pageY - pointA.pageY;
      return Math.sqrt(x * x + y * y);
    };
    const setImageAnimation = (callback) => {
      return new Promise((resolve) => {
        imgRef.value.$el.style.transition = "transform 300ms";
        imgRef.value.$el.offsetWidth;
        callback();
        setTimeout(() => {
          imgRef.value.$el.style.transition = "";
          imgRef.value.$el.style.webkitTransition = "";
          imgRef.value.$el.offsetWidth;
          resolve();
        }, 300);
      });
    };
    const getImageCoverData = () => {
      const imgRect = obj.element.getElementBounding(imgRef.value.$el);
      const elRect = obj.element.getElementBounding(elRef.value);
      return {
        left: elRect.left - imgRect.left,
        top: elRect.top - imgRect.top,
        right: elRect.right - imgRect.right,
        bottom: elRect.bottom - imgRect.bottom
      };
    };
    const setImageTranslate = (endX, endY) => {
      const moveX = (endX - imageMovePoint.value.x) * 0.5;
      const moveY = (endY - imageMovePoint.value.y) * 0.5;
      const imgRect = imgRef.value.$el.getBoundingClientRect();
      const elRect = elRef.value.getBoundingClientRect();
      if (moveY > 0 && imgRect.top >= elRect.bottom - elRect.height / 10) {
        return;
      }
      if (moveY < 0 && imgRect.bottom <= elRect.top + elRect.height / 10) {
        return;
      }
      if (moveX > 0 && imgRect.left >= elRect.right - elRect.height / 10) {
        return;
      }
      if (moveX < 0 && imgRect.right <= elRect.left + elRect.height / 10) {
        return;
      }
      translateX.value += moveX;
      translateY.value += moveY;
      imageMovePoint.value = {
        x: endX,
        y: endY
      };
    };
    const handleTranslateEnd = (event2) => {
      setImageAnimation(() => {
        const elRect = elRef.value.getBoundingClientRect();
        if (translateY.value * scale.value >= elRect.height - elRect.height / 10 + imageCoverRect.value.top) {
          translateY.value = (elRect.height - elRect.height / 10 + imageCoverRect.value.top) / scale.value;
        }
        if (translateY.value * scale.value <= -(elRect.height - elRect.height / 10 + imageCoverRect.value.bottom)) {
          translateY.value = -(elRect.height - elRect.height / 10 + imageCoverRect.value.bottom) / scale.value;
        }
        if (translateX.value * scale.value >= elRect.width - elRect.width / 10 + imageCoverRect.value.left) {
          translateX.value = (elRect.width - elRect.width / 10 + imageCoverRect.value.left) / scale.value;
        }
        if (translateX.value * scale.value <= -(elRect.width - elRect.width / 10 + imageCoverRect.value.right)) {
          translateX.value = -(elRect.width - elRect.width / 10 + imageCoverRect.value.right) / scale.value;
        }
      });
      imageCanMove.value = false;
      event2.type == "mouseup" ? emits("translate-mouseup") : emits("translate-touchend");
    };
    const scaleByWheel = (event2) => {
      if (event2.cancelable) {
        event2.preventDefault();
      }
      let deltaY = event2.wheelDeltaY || -event2.deltaY;
      if (deltaY > 0) {
        scaleUp();
      } else {
        scaleDown();
      }
    };
    const handleImageTranslate = (event2) => {
      if (event2.type == "mousedown") {
        if (scale.value <= 1) {
          return;
        }
        emits("translate-mousedown", event2);
        imageMovePoint.value = {
          x: event2.pageX,
          y: event2.pageY
        };
        imageCanMove.value = true;
      } else if (event2.type == "mousemove") {
        if (event2.cancelable) {
          event2.preventDefault();
        }
        if (imageCanMove.value) {
          setImageTranslate(event2.pageX, event2.pageY);
        }
      } else if (event2.type == "mouseup") {
        if (imageCanMove.value) {
          handleTranslateEnd(event2);
        }
      }
    };
    const scaleByTouch = (event2) => {
      if (event2.type == "touchstart") {
        isTriggerDouble.value = false;
        if (event2.touches.length == 2) {
          emits("double-touchstart", event2);
          doubleTouch.value.is = true;
          imageCanMove.value = false;
          doubleTouch.value.spacing = getPointSpacing(event2.touches[0], event2.touches[1]);
        } else {
          doubleTouch.value.is = false;
          if (scale.value > 1) {
            emits("translate-touchstart", event2);
            imageMovePoint.value = {
              x: event2.targetTouches[0].pageX,
              y: event2.targetTouches[0].pageY
            };
            imageCanMove.value = true;
          }
          downPoint.value = {
            x: event2.targetTouches[0].pageX,
            y: event2.targetTouches[0].pageY
          };
        }
      } else if (event2.type == "touchmove") {
        if (event2.cancelable) {
          event2.preventDefault();
        }
        if (event2.touches.length == 2 && doubleTouch.value.is) {
          let spacing = getPointSpacing(event2.touches[0], event2.touches[1]);
          if (spacing < doubleTouch.value.spacing) {
            if (scale.value > props.minScale) {
              translateX.value = 0;
              translateY.value = 0;
              scale.value = obj.number.add(scale.value, obj.number.divide(obj.number.subtract(spacing, doubleTouch.value.spacing), elRef.value.offsetWidth));
              imageCoverRect.value = getImageCoverData();
            }
          } else {
            if (scale.value < props.maxScale) {
              translateX.value = 0;
              translateY.value = 0;
              scale.value = obj.number.add(scale.value, obj.number.divide(obj.number.subtract(spacing, doubleTouch.value.spacing), elRef.value.offsetWidth));
              imageCoverRect.value = getImageCoverData();
            }
          }
          doubleTouch.value.spacing = spacing;
        } else {
          if (imageCanMove.value) {
            setImageTranslate(event2.targetTouches[0].pageX, event2.targetTouches[0].pageY);
          }
        }
      } else if (event2.type == "touchend") {
        if (doubleTouch.value.is) {
          if (scale.value < 1) {
            setImageAnimation(() => {
              scale.value = 1;
              imageCoverRect.value = getImageCoverData();
            });
          }
          isTriggerDouble.value = true;
          doubleTouch.value.is = false;
          emits("double-touchend", event2);
        } else {
          upPoint.value = {
            x: event2.changedTouches[0].pageX,
            y: event2.changedTouches[0].pageY
          };
          if (imageCanMove.value && !isTriggerDouble.value) {
            handleTranslateEnd(event2);
          }
        }
      }
    };
    const handleMouseOpt = (event2) => {
      if (event2.type == "mousedown") {
        downPoint.value = {
          x: event2.pageX,
          y: event2.pageY
        };
        handleImageTranslate(event2);
      } else if (event2.type == "mouseup") {
        upPoint.value = {
          x: event2.pageX,
          y: event2.pageY
        };
      }
    };
    const handleClick = () => {
      if (downPoint.value && upPoint.value && downPoint.value.x == upPoint.value.x && downPoint.value.y == upPoint.value.y) {
        emits("only-click");
      }
    };
    onMounted(() => {
      obj.event.on(document.documentElement, `mousemove.richImage_${instance.uid}`, handleImageTranslate);
      obj.event.on(document.documentElement, `mouseup.richImage_${instance.uid}`, handleImageTranslate);
    });
    onBeforeUnmount(() => {
      obj.event.off(document.documentElement, `mousemove.richImage_${instance.uid} mouseup.richImage_${instance.uid}`);
    });
    __expose({
      leftRotate,
      rightRotate,
      scaleUp,
      scaleDown,
      reset
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: "mvi-rich-image",
        ref_key: "elRef",
        ref: elRef,
        onMousewheel: scaleByWheel,
        onTouchstart: scaleByTouch,
        onTouchmove: scaleByTouch,
        onTouchend: scaleByTouch,
        onMousedown: handleMouseOpt,
        onMouseup: handleMouseOpt,
        onClick: handleClick
      }, [
        createVNode(unref(Image$1), {
          ref_key: "imgRef",
          ref: imgRef,
          fit: "response",
          style: normalizeStyle(imgStyle.value),
          width: "100%",
          height: "100%",
          src: _ctx.src,
          "load-icon": _ctx.loadIcon,
          "error-icon": _ctx.errorIcon,
          onDragstart: _cache[0] || (_cache[0] = withModifiers(() => {
          }, ["prevent"]))
        }, null, 8, ["style", "src", "load-icon", "error-icon"])
      ], 544);
    };
  }
});
const richImage = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-d8127c40"]]);
const RichImage = withInstall(richImage);
const ImagePreviewProps = {
  //是否显示
  modelValue: {
    type: Boolean,
    default: false
  },
  //图片数组
  images: {
    type: Array,
    default: function() {
      return [];
    }
  },
  //图片描述
  descriptions: {
    type: Array,
    default: function() {
      return [];
    }
  },
  //默认显示的图片序列
  active: {
    type: Number,
    default: 0
  },
  //挂载元素
  mountEl: {
    type: String,
    default: null
  },
  //z-index值
  zIndex: {
    type: Number,
    default: 5e3
  },
  //轮播模式
  mode: {
    type: String,
    default: "slide"
  },
  //是否显示控制器
  controls: {
    type: Boolean,
    default: false
  },
  //图片是否可以循环
  loop: {
    type: Boolean,
    default: false
  },
  //是否显示页码
  showPage: {
    type: Boolean,
    default: true
  },
  //局部显示是否考虑滚动条影响
  usePadding: {
    type: Boolean,
    default: false
  },
  //是否使用图片工具栏
  useTools: {
    type: Boolean,
    default: false
  },
  //图片加载失败提示设置
  errorIcon: {
    type: [String, Object],
    default: {
      size: "1rem",
      type: "image-error"
    }
  },
  //图片加载中提示设置
  loadIcon: {
    type: [String, Object],
    default: function() {
      return {
        size: "1rem",
        type: "image-alt"
      };
    }
  },
  //最大缩放值
  maxScale: {
    type: Number,
    default: 3
  },
  //最小缩放值
  minScale: {
    type: Number,
    default: 0.3
  }
};
const _withScopeId = (n) => (pushScopeId("data-v-44e22330"), n = n(), popScopeId(), n);
const _hoisted_1 = {
  key: 0,
  class: "mvi-image-preview-page"
};
const _hoisted_2 = { key: 1 };
const _hoisted_3 = ["textContent"];
const _hoisted_4 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElementVNode("span", null, "/", -1));
const _hoisted_5 = ["textContent"];
const _hoisted_6 = {
  key: 1,
  class: "mvi-image-preview-footer"
};
const _hoisted_7 = {
  key: 0,
  class: "mvi-image-preview-tools"
};
const _hoisted_8 = ["textContent"];
const _sfc_main = /* @__PURE__ */ defineComponent({
  ...{
    name: "m-image-preview"
  },
  __name: "image-preview",
  props: ImagePreviewProps,
  emits: ["update:modelValue", "change"],
  setup(__props, { expose: __expose, emit: __emit }) {
    const props = __props;
    const emits = __emit;
    const showCarousel = ref(false);
    const carouselIndex = ref(0);
    const enableTouch = ref(true);
    const imageRefs = ref([]);
    const overlayRef = ref(null);
    const touchTimer = ref(null);
    const $$el = computed(() => {
      return overlayRef.value ? overlayRef.value.$$el : null;
    });
    const show = computed({
      set(value) {
        emits("update:modelValue", value);
      },
      get() {
        return props.modelValue;
      }
    });
    const setImageRef = (el, index) => {
      imageRefs.value[index] = el;
    };
    const closeOverlay = () => {
      imageRefs.value.forEach((imageRef) => {
        imageRef.reset();
      });
      show.value = false;
    };
    const resetImage = () => {
      var _a;
      (_a = imageRefs.value[carouselIndex.value]) == null ? void 0 : _a.reset();
    };
    const plusImage = () => {
      var _a;
      (_a = imageRefs.value[carouselIndex.value]) == null ? void 0 : _a.scaleUp();
    };
    const minusImage = () => {
      var _a;
      (_a = imageRefs.value[carouselIndex.value]) == null ? void 0 : _a.scaleDown();
    };
    const leftRotateImage = () => {
      var _a;
      (_a = imageRefs.value[carouselIndex.value]) == null ? void 0 : _a.leftRotate();
    };
    const rightRotateImage = () => {
      var _a;
      (_a = imageRefs.value[carouselIndex.value]) == null ? void 0 : _a.rightRotate();
    };
    const overlayShowing = () => {
      if (!showCarousel.value) {
        showCarousel.value = true;
      }
    };
    const carouselChange = () => {
      imageRefs.value.forEach((imageRef) => {
        if (imageRef) {
          imageRef.reset();
        }
      });
      emits("change", carouselIndex.value);
    };
    const disabledCarouselTouch = () => {
      if (touchTimer.value) {
        clearTimeout(touchTimer.value);
      }
      enableTouch.value = false;
    };
    const enableCarouselTouch = () => {
      touchTimer.value = setTimeout(() => {
        enableTouch.value = true;
      }, 100);
    };
    watch(
      () => props.active,
      (newVal) => {
        carouselIndex.value = newVal;
      },
      {
        immediate: true
      }
    );
    __expose({
      $$el
    });
    return (_ctx, _cache) => {
      return openBlock(), createBlock(unref(Overlay), {
        ref_key: "overlayRef",
        ref: overlayRef,
        modelValue: show.value,
        "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => show.value = $event),
        color: "#000",
        fade: false,
        onShowing: overlayShowing,
        "z-index": _ctx.zIndex,
        "use-padding": _ctx.usePadding,
        mountEl: _ctx.mountEl
      }, {
        default: withCtx(() => [
          showCarousel.value ? (openBlock(), createBlock(unref(Carousel), {
            key: 0,
            ref: "carouselRef",
            class: "mvi-image-preview-carousel",
            modelValue: carouselIndex.value,
            "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => carouselIndex.value = $event),
            controls: _ctx.controls,
            indicators: !!(_ctx.showPage || _ctx.useTools || _ctx.$slots.descriptions || _ctx.descriptions.length),
            mode: _ctx.mode,
            loop: _ctx.loop,
            touchable: enableTouch.value,
            onChange: carouselChange
          }, {
            indicators: withCtx((data2) => [
              _ctx.showPage ? (openBlock(), createElementBlock("div", _hoisted_1, [
                _ctx.$slots.page ? renderSlot(_ctx.$slots, "page", {
                  key: 0,
                  total: data2.total,
                  current: carouselIndex.value
                }, void 0, true) : (openBlock(), createElementBlock("div", _hoisted_2, [
                  createElementVNode("span", {
                    textContent: toDisplayString(carouselIndex.value + 1)
                  }, null, 8, _hoisted_3),
                  _hoisted_4,
                  createElementVNode("span", {
                    textContent: toDisplayString(data2.total)
                  }, null, 8, _hoisted_5)
                ]))
              ])) : createCommentVNode("", true),
              !!(_ctx.useTools || _ctx.$slots.descriptions || _ctx.descriptions.length) ? (openBlock(), createElementBlock("div", _hoisted_6, [
                _ctx.useTools ? (openBlock(), createElementBlock("div", _hoisted_7, [
                  createVNode(unref(Icon), {
                    onClick: plusImage,
                    class: "mvi-image-preview-tools-icon",
                    type: "search-plus-o"
                  }),
                  createVNode(unref(Icon), {
                    onClick: minusImage,
                    class: "mvi-image-preview-tools-icon",
                    type: "search-minus-o"
                  }),
                  createVNode(unref(Icon), {
                    onClick: resetImage,
                    class: "mvi-image-preview-tools-icon",
                    type: "double-circle"
                  }),
                  createVNode(unref(Icon), {
                    onClick: leftRotateImage,
                    class: "mvi-image-preview-tools-icon",
                    type: "left-rotate"
                  }),
                  createVNode(unref(Icon), {
                    onClick: rightRotateImage,
                    class: "mvi-image-preview-tools-icon",
                    type: "right-rotate"
                  }),
                  _ctx.$slots.tools ? renderSlot(_ctx.$slots, "tools", { key: 0 }, void 0, true) : createCommentVNode("", true)
                ])) : createCommentVNode("", true),
                !!(_ctx.$slots.descriptions || _ctx.descriptions.length) ? (openBlock(), createElementBlock("div", {
                  key: 1,
                  class: normalizeClass(["mvi-image-preview-descriptions", { "has-tools": _ctx.useTools }])
                }, [
                  _ctx.$slots.descriptions ? renderSlot(_ctx.$slots, "descriptions", {
                    key: 0,
                    total: data2.total,
                    current: carouselIndex.value
                  }, void 0, true) : !!_ctx.descriptions.length ? (openBlock(), createElementBlock("div", {
                    key: 1,
                    class: "mvi-image-preview-description",
                    textContent: toDisplayString(_ctx.descriptions[carouselIndex.value])
                  }, null, 8, _hoisted_8)) : createCommentVNode("", true)
                ], 2)) : createCommentVNode("", true)
              ])) : createCommentVNode("", true)
            ]),
            default: withCtx(() => [
              (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.images, (item, index) => {
                return openBlock(), createBlock(unref(CarouselItem), null, {
                  default: withCtx(() => [
                    createVNode(unref(RichImage), {
                      ref_for: true,
                      ref: (el) => setImageRef(el, index),
                      onDoubleTouchstart: disabledCarouselTouch,
                      onTranslateTouchstart: disabledCarouselTouch,
                      onTranslateMousedown: disabledCarouselTouch,
                      onDoubleTouchend: enableCarouselTouch,
                      onTranslateTouchend: enableCarouselTouch,
                      onTranslateMouseup: enableCarouselTouch,
                      onReset: enableCarouselTouch,
                      onOnlyClick: closeOverlay,
                      src: item,
                      "error-icon": _ctx.errorIcon,
                      "load-icon": _ctx.loadIcon,
                      "max-scale": _ctx.maxScale,
                      "min-scale": _ctx.minScale
                    }, null, 8, ["src", "error-icon", "load-icon", "max-scale", "min-scale"])
                  ]),
                  _: 2
                }, 1024);
              }), 256))
            ]),
            _: 3
          }, 8, ["modelValue", "controls", "indicators", "mode", "loop", "touchable"])) : createCommentVNode("", true)
        ]),
        _: 3
      }, 8, ["modelValue", "z-index", "use-padding", "mountEl"]);
    };
  }
});
const imagePreview = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-44e22330"]]);
const ImagePreview = withInstall(imagePreview);
obj.event.on(window, "touchstart.ios", () => {
});
const plugins = { Anchor: vAnchor, Drag: vDrag, Observe: vObserve, Prop: vProp, Px: vPx, Resize: vResize, Ripple: vRipple, Scroll: vScroll, Spy: vSpy, Upload: vUpload, Icon, Badge, Button, Triangle, Layer, Label, Input, Loading, LoadingBar, Msgbox, Divider, Cell, CellGroup, Checkbox, Radio, Sign, Roll, Row, Col, Autocomplete, Overlay, Popup, Dropdown, Tooltip, TransitionSlide, Switch, Navbar, Notify, Actionsheet, Calendar, CircleProgress, Collapse, CollapseItem, DateChooser, DateNativePicker, Picker, Progress, Slider, DatePicker, Field, Form, FormEl, Image: Image$1, ColorPicker, List, Modal, Page, Search, Select, Skeleton, Steps, Step, Stepper, NumberKeyboard, Toast, PullRefresh, Dialog, SwipeCell, Tabbar, Table, Tabs, Tab, Carousel, CarouselItem, RichImage, ImagePreview };
const install = (app) => {
  Object.values(plugins).map((plugin) => {
    plugin.install(app);
  });
};
const version = "2.0.15";
console.log(`%c mvi-web-plus %c v${version} `, "padding: 2px 1px; border-radius: 3px 0 0 3px; color: #fff; background: #606060; font-weight: bold;", "padding: 2px 1px; border-radius: 0 3px 3px 0; color: #fff; background: #42c02e; font-weight: bold;");
export {
  Actionsheet,
  Anchor,
  Autocomplete,
  Badge,
  Button,
  Calendar,
  Carousel,
  CarouselItem,
  Cell,
  CellGroup,
  Checkbox,
  CircleProgress,
  Col,
  Collapse,
  CollapseItem,
  ColorPicker,
  DateChooser,
  DateNativePicker,
  DatePicker,
  Dialog,
  Divider,
  Drag$1 as Drag,
  Dropdown,
  Field,
  Form,
  FormEl,
  Icon,
  Image$1 as Image,
  ImagePreview,
  Input,
  Label,
  Layer,
  List,
  Loading,
  LoadingBar,
  Modal,
  Msgbox,
  Navbar,
  Notify,
  NumberKeyboard,
  Observe$1 as Observe,
  Overlay,
  Page,
  Picker,
  Popup,
  Progress,
  Prop$1 as Prop,
  PullRefresh,
  Px$1 as Px,
  Radio,
  Resize$1 as Resize,
  RichImage,
  Ripple$1 as Ripple,
  Roll,
  Row,
  Scroll$1 as Scroll,
  Search,
  Select,
  Sign,
  Skeleton,
  Slider,
  Spy$1 as Spy,
  Step,
  Stepper,
  Steps,
  SwipeCell,
  Switch,
  Tab,
  Tabbar,
  Table,
  Tabs,
  Toast,
  Tooltip,
  TransitionSlide,
  Triangle,
  Upload$1 as Upload,
  install as default,
  install,
  isDark,
  useDark,
  vAnchor,
  vDrag,
  vObserve,
  vProp,
  vPx,
  vResize,
  vRipple,
  vScroll,
  vSpy,
  vUpload,
  version
};
!function(){"use strict";try{if("undefined"!=typeof document){var A=document.createElement("style");A.appendChild(document.createTextNode(':root{--mvi-font-color-default: #505050;--mvi-font-color-sub: #808080;--mvi-font-color-mute: #bbb;--mvi-font-color-link: #085fbb;--mvi-bg-color-default: #f7f8fa;--mvi-bg-color-dark: #ebedf0;--mvi-bg-color-common: #fff;--mvi-bg-color-active: #032237;--mvi-bg-color-default-opacity-9: rgba(255, 255, 255, .9);--mvi-bg-color-default-opacity-6: rgba(255, 255, 255, .6);--mvi-border-color: #ddd;--mvi-info-normal: #03a8f3;--mvi-info-shadow: rgba(3, 168, 243, .5);--mvi-error-normal: #ec1a0a;--mvi-error-shadow: rgba(236, 26, 10, .5);--mvi-warn-normal: #f90;--mvi-warn-shadow: rgba(255, 153, 0, .5);--mvi-success-normal: #07c160;--mvi-success-shadow: rgba(7, 193, 96, .5);--mvi-primary-normal: #0b73de;--mvi-primary-shadow: rgba(11, 115, 222, .5);--mvi-light-default: #e2e7ea;--mvi-light-info: #c3ebff;--mvi-light-success: #c2fdc4;--mvi-light-warn: #ffd6b6;--mvi-light-primary: #1eacf3;--mvi-light-error: #f9cec3;--mvi-overlay: rgba(0, 0, 0, .6);--mvi-boxshadow: .01rem .04rem .2rem rgba(0, 0, 0, .1)}:root[data-mvi-dark]{--mvi-font-color-default: #fff;--mvi-font-color-sub: #d8d8d8;--mvi-font-color-mute: #4a4a4a;--mvi-bg-color-default: #000;--mvi-bg-color-dark: #2f2f2f;--mvi-bg-color-common: #1a1a1a;--mvi-bg-color-active: #bdbdbd;--mvi-bg-color-default-opacity-9: rgba(26, 26, 26, .9);--mvi-bg-color-default-opacity-6: rgba(26, 26, 26, .6);--mvi-border-color: #2c2c2c;--mvi-boxshadow: .01rem .04rem .1rem rgba(0, 0, 0, .8)}@font-face{font-family:mvi-icon;src:url(data:font/woff;base64,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) format("woff"),url(data:font/ttf;base64,AAEAAAALAIAAAwAwR1NVQiCLJXoAAAE4AAAAVE9TLzI8JFLjAAABjAAAAGBjbWFwX0M36gAAB0wAABb0Z2x5ZiL8YPQAACD0AAD+bGhlYWQl+xocAAAA4AAAADZoaGVhCP0GVgAAALwAAAAkaG10eG9i/+QAAAHsAAAFYGxvY2F2zjh4AAAeQAAAArJtYXhwAnEBuAAAARgAAAAgbmFtZWKydiQAAR9gAAACZ3Bvc3Rprm1yAAEhyAAAEGEAAQAAA4D/gABcBYD/9P/9BSoAAQAAAAAAAAAAAAAAAAAAAVgAAQAAAAEAANhmqitfDzz1AAsEAAAAAADg3usHAAAAAODe6wf/9P9xBSoDoAAAAAgAAgAAAAAAAAABAAABWAGsAA8AAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKADAAPgACREZMVAAObGF0bgAaAAQAAAAAAAAAAQAAAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAQECwGQAAUAAAKJAswAAACPAokCzAAAAesAMgEIAAACAAUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBmRWQAwOYA8AgDgP+AAAAD3ACPAAAAAQAAAAAAAAAAAAAAAAACBAAAAASq//8FgAAABFUAAAQAAAAEAAAABAAAAAQAAAAEAAAABAD//wQA//QEEP/8BAAAAAQAAAAEAAAABAAAAATM//8EAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABRcAAAQAAAAEAAAABAAAAAQAAAAEAAAABAIAAAQA//8EAAAABAAAAAQAAAAEAP//BAD//wQA//8EAP//BAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQnAAAEAAAABUMAAAQAAAAEAAAABAEAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAUA//4E///+BAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAESgAABEIAAAQAAAAEAAAABAAAAASpAAAEqQAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAUAAAAFAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEgAAABIAAAASAAAAEgQAABM0AAATNAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAA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AAAAQwAA5k4AAOZOAAABVwAA5k8AAOZPAAAACAAA5lAAAOZQAAAAzQAA5lEAAOZRAAAAzgAA5lIAAOZSAAAAzwAA5lMAAOZTAAAA0AAA5lQAAOZUAAAA0QAA5lUAAOZVAAAA0gAA5lYAAOZWAAAA0wAA5lcAAOZXAAAA1AAA5lgAAOZYAAAAEAAA5lkAAOZZAAAAXwAA5loAAOZaAAAAEgAA5lsAAOZbAAAArgAA5lwAAOZcAAAArwAA5l0AAOZdAAAAAQAA5l4AAOZeAAAA1QAA5l8AAOZfAAAA1gAA5mAAAOZgAAAAAgAA5mMAAOZjAAAAEQAA5mQAAOZkAAAA1wAA5mYAAOZmAAAAlQAA5mcAAOZnAAAAlgAA5mgAAOZoAAAAlwAA5mkAAOZpAAAAmAAA5moAAOZqAAAAgwAA5msAAOZrAAAAewAA5mwAAOZsAAAACwAA5m0AAOZtAAAAGgAA5m8AAOZvAAAAWQAA5nEAAOZxAAAATQAA5nIAAOZyAAAA2AAA5nMAAOZzAAAAYAAA5nQAAOZ0AAAAYQAA5ncAAOZ3AAAARgAA5ngAAOZ4AAAAQQAA5nkAAOZ5AAAAPgAA5noAAOZ6AAAAPwAA5nsAAOZ7AAAAQAAA5nwAAOZ8AAAALgAA5n0AAOZ9AAAA2QAA5n4AAOZ+AAAAMAAA5n8AAOZ/AAAAIwAA5oAAAOaAAAAAJAAA5oEAAOaBAAAAJQAA5oIAAOaCAAAAJgAA5oMAAOaDAAAAIAAA5oQAAOaEAAAA2gAA5oUAAOaFAAAA2wAA5oYAAOaGAAAAqQAA5ocAAOaHAAAA3AAA5ogAAOaIAAAA3QAA5okAAOaJAAAA3gAA5ooAAOaKAAAA3wAA5osAAOaLAAAAqgAA5owAAOaMAAAA4AAA5o0AAOaNAAAAMQAA5o8AAOaPAAAAIQAA5pAAAOaQAAAA4QAA5pEAAOaRAAAAVgAA5pIAAOaSAAAAHgAA5pUAAOaVAAAA4gAA5pYAAOaWAAAARQAA5pcAAOaXAAAA4wAA5pgAAOaYAAAA5AAA5pkAAOaZAAAAHwAA5p8AAOafAAAA5QAA5qEAAOahAAAAiQAA5qMAAOajAAAAfQAA5qQAAOakAAAAzAAA5qUAAOalAAAAfgAA5qcAAOanAAAA5gAA5qkAAOapAAAA5wAA5qoAAOaqAAAA6AAA5qsAAOarAAAA6QAA5qwAAOasAAAA6gAA5q0AAOatAAAA6wAA5q4AAOauAAAA7AAA5rAAAOawAAAA7QAA5rEAAOaxAAAA7gAA5rIAAOayAAAA7wAA5rMAAOazAAAA8AAA5rQAAOa0AAAA8QAA5rUAAOa1AAAA8gAA5rYAAOa2AAAA8wAA5rgAAOa4AAAA9AAA5rkAAOa5AAAA9QAA5roAAOa6AAAA9gAA5rsAAOa7AAAA9wAA5r0AAOa9AAAA+AAA5r4AAOa+AAAA+QAA5sAAAObAAAAA+gAA5sEAAObBAAAARwAA5sMAAObDAAAA+wAA5sUAAObFAAAA/AAA5scAAObHAAAA/QAA5soAAObKAAAA/gAA5swAAObMAAAAIgAA5s4AAObOAAAA/wAA5s8AAObPAAAAhQAA5tAAAObQAAABAAAA5tEAAObRAAAAhgAA5tIAAObSAAAAcQAA5tMAAObTAAABAQAA5tYAAObWAAABAgAA5tgAAObYAAABAwAA5tkAAObZAAABBAAA5twAAObcAAABBQAA5t0AAObdAAAAmQAA5t8AAObfAAABBgAA5uAAAObgAAABBwAA5uIAAObiAAAAmgAA5uQAAObkAAABCAAA5uUAAOblAAAAmwAA5ucAAObnAAAAhwAA5ugAAOboAAABCQAA5ukAAObpAAABCgAA5uoAAObqAAABCwAA5usAAObrAAABDAAA5u0AAObtAAAAiAAA5u4AAObuAAAAWAAA5u8AAObvAAABDQAA5vEAAObxAAABDgAA5vIAAObyAAABDwAA5vMAAObzAAABEAAA5vQAAOb0AAAAcgAA5vUAAOb1AAABEQAA5vYAAOb2AAAAcwAA5vgAAOb4AAAAdAAA5vkAAOb5AAABEgAA5voAAOb6AAAAdQAA5vsAAOb7AAAAdgAA5vwAAOb8AAABEwAA5v0AAOb9AAABFAAA5v4AAOb+AAABFQAA5v8AAOb/AAABFgAA5wAAAOcAAAABFwAA5wMAAOcDAAABGAAA5wQAAOcEAAAAnAAA5wUAAOcFAAABGQAA5wYAAOcGAAABGgAA5wsAAOcLAAABIAAA5w4AAOcOAAABJAAA5w8AAOcPAAABJgAA5xAAAOcQAAABKAAA5xEAAOcRAAABKgAA5xMAAOcTAAABLQAA5xQAAOcUAAABLwAA5xUAAOcVAAABMAAA5xYAAOcWAAABMgAA5xcAAOcXAAABNAAA5xgAAOcYAAABNgAA5xkAAOcZAAAAoAAA5xsAAOcbAAABOQAA5xwAAOccAAAAFwAA5x4AAOceAAAAGwAA5x8AAOcfAAAAHAAA5yAAAOcgAAAAVAAA5yEAAOchAAAAVQAA5yIAAOciAAAAfAAA5yMAAOcjAAAATgAA5yQAAOckAAAAagAA5yUAAOclAAAAawAA5ycAAOcnAAAApgAA5ygAAOcoAAAAdwAA5ykAAOcpAAAApwAA5yoAAOcqAAAAqAAA5ywAAOcsAAABRgAA5y0AAOctAAAAeAAA5zQAAOc0AAAAbAAA5zUAAOc1AAAAbQAA5zYAAOc2AAAAbgAA5zcAAOc3AAAAbwAA5zgAAOc4AAAATwAA5zkAAOc5AAAAUAAA5zoAAOc6AAAAUQAA5zsAAOc7AAAAeQAA5zwAAOc8AAAAegAA5z0AAOc9AAAACgAA51EAAOdRAAAAAwAA52IAAOdiAAAAjgAA52MAAOdjAAAAjwAA52gAAOdoAAAAnQAA53AAAOdwAAAABgAA53EAAOdxAAAABwAA54oAAOeKAAAAkQAA54sAAOeLAAAAkgAA540AAOeNAAAAkAAA55IAAOeSAAAARAAA56UAAOelAAAAQgAA56gAAOeoAAAASwAA56wAAOesAAAAEwAA58oAAOfKAAAAHQAA59gAAOfYAAAAFgAA5+QAAOfkAAAAnwAA5+YAAOfmAAAAigAA5+cAAOfnAAAAiwAA5+kAAOfpAAAAjAAA5+oAAOfqAAAAjQAA5+wAAOfsAAAATAAA5/cAAOf3AAAAGQAA6AUAAOgFAAAAXgAA6AsAAOgLAAAAVwAA6CIAAOgiAAAAMgAA6DwAAOg8AAAAtAAA6D0AAOg9AAAAtQAA6D4AAOg+AAAAtgAA6D8AAOg/AAAAtwAA6EAAAOhAAAAAuAAA6EEAAOhBAAAAuQAA6EIAAOhCAAAAugAA6EMAAOhDAAAAuwAA6EQAAOhEAAAAvAAA6EUAAOhFAAAAvQAA6EYAAOhGAAAAvgAA6EcAAOhHAAAAvwAA6EgAAOhIAAAAwAAA6EkAAOhJAAAAwQAA6EoAAOhKAAAAwgAA6EsAAOhLAAAAwwAA6EwAAOhMAAAAxAAA6E0AAOhNAAAAxQAA6E4AAOhOAAAAxgAA6E8AAOhPAAAAxwAA6FAAAOhQ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IGljb25mb250bXZpLWljb25SZWd1bGFybXZpLWljb25tdmktaWNvblZlcnNpb24gMS4wbXZpLWljb25HZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuaHR0cDovL2ZvbnRlbGxvLmNvbQBDAHIAZQBhAHQAZQBkACAAYgB5ACAAaQBjAG8AbgBmAG8AbgB0AG0AdgBpAC0AaQBjAG8AbgBSAGUAZwB1AGwAYQByAG0AdgBpAC0AaQBjAG8AbgBtAHYAaQAtAGkAYwBvAG4AVgBlAHIAcwBpAG8AbgAgADEALgAwAG0AdgBpAC0AaQBjAG8AbgBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAABWAECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkBOgE7ATwBPQE+AT8BQAFBAUIBQwFEAUUBRgFHAUgBSQFKAUsBTAFNAU4BTwFQAVEBUgFTAVQBVQFWAVcBWAFZAVoBWwFcAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3AXgBeQF6AXsBfAF9AX4BfwGAAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B3wHgAeEB4gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+Af8CAAIBAgICAwIEAgUCBgIHAggCCQIKAgsCDAINAg4CDwIQAhECEgITAhQCFQIWAhcCGAIZAhoCGwIcAh0CHgIfAiACIQIiAiMCJAIlAiYCJwIoAikCKgIrAiwCLQIuAi8CMAIxAjICMwI0AjUCNgI3AjgCOQI6AjsCPAI9Aj4CPwJAAkECQgJDAkQCRQJGAkcCSAJJAkoCSwJMAk0CTgJPAlACUQJSAlMCVAJVAlYCVwJYAlkAD3R1cm4tYXJyb3ctdGV4dBB0dXJuLWFycm93LXJvdW5kCnR1cm4tYXJyb3cKY29kZS1ibG9jaw1kb3VibGUtY2lyY2xlC2xlZnQtcm90YXRlDHJpZ2h0LXJvdGF0ZQV3ZWlibwJ3eAVhcHBsZQNzZXQMd2VpYm8tc3F1YXJlCXd4LXNxdWFyZQJxcQdhbmRyb2lkBnd4LXBheQdhbGktcGF5BHd4LW8Hd2luZG93cwZkb3V5aW4EbWluaQhtaW5pLWFsdAVicnVzaAVxdW90ZQlmb250LXNpemUEaW5mbwppbmZvLW8tYWx0C2Vycm9yLW8tYWx0BWVycm9yB2Vycm9yLW8GaW5mby1vCXN1Y2Nlc3Mtbw1zdWNjZXNzLW8tYWx0B3N1Y2Nlc3MLcGx1cy1zcXVhcmUMbWludXMtc3F1YXJlEG1pbnVzLXNxdWFyZS1hbHQPcGx1cy1zcXVhcmUtYWx0BGJhcnMGZWRpdG9yC2ltYWdlLWVycm9yEGN1c3RvbWVyLXNlcnZpY2UDYnVnD2NoYXJ0LXBvbHlnb25hbApmb250LXRpdGxlBnJhbmRvbQpzZXF1ZW50aWFsC3NpbmdsZS1sb29wBGxvb3AFcGF1c2UIYmFja3dhcmQNZmFzdC1iYWNrd2FyZAdmb3J3YXJkDGZhc3QtZm9yd2FyZAttZW51LXVuZm9sZAltZW51LWZvbGQNc3RlcC1iYWNrd2FyZAxzdGVwLWZvcndhcmQQc3RlcC1mb3J3YXJkLWFsdBFzdGVwLWJhY2t3YXJkLWFsdAZwbGF5LW8EcGxheQdwYXVzZS1vC3BhdXNlLW8tYWx0DXBhcnR0ZW4tY2hhcnQJY2hhcnQtYmFyDmJlbGwtc2xhc2gtYWx0CmJlbGwtc2xhc2gEYmVsbAhiZWxsLWFsdAljbG91ZC1hbHQFY2xvdWQFbG9naW4GbG9nb3V0B2NvbW1lbnQLY29tbWVudC1hbHQIb25lZHJpdmUFdGhlbWUJdGhlbWUtYWx0A2hvdA5jbGFzc2lmaWNhdGlvbgllbWFpbC1hbHQFZW1haWwDY3V0BXBhc3RlDWZpbGUtcGx1cy1hbHQKZmlsZS1jaGVjaw5maWxlLWltYWdlLWFsdA5maWxlLW1pbnVzLWFsdAtmb2xkZXItcGx1cwlmaWxlLXBsdXMKZmlsZS1taW51cwpmaWxlLWltYWdlDmZpbGUtY2hlY2stYWx0DGZvbGRlci1taW51cxBmb2xkZXItbWludXMtYWx0D2ZvbGRlci1wbHVzLWFsdAtmb2xkZXItb3Blbg9mb2xkZXItb3Blbi1hbHQKZm9sZGVyLWFsdAZmb2xkZXIIZXhjaGFuZ2UKZm9udC1taW51cwlmb250LXBsdXMEZm9udAlob3JuLWRvd24HaG9ybi11cA1ob3JuLWRvd24tYWx0CWhvcm4tbXV0ZQ1ob3JuLW11dGUtYWx0C2hvcm4tdXAtYWx0CGNvZ3MtYWx0BGNvZ3MIZmlsZS1hbHQEZmlsZQRlZGl0BWVtb2ppCWVtb2ppLWFsdANjb2cHY29nLWFsdAl2aWRlby1hbHQFdmlkZW8LaGFuZC11cC1hbHQNaGFuZC1sZWZ0LWFsdA1oYW5kLWRvd24tYWx0DmhhbmQtcmlnaHQtYWx0CWhhbmQtZG93bgloYW5kLWxlZnQKaGFuZC1yaWdodAdoYW5kLXVwBmltYWdlcwppbWFnZXMtYWx0CGhvbWUtYWx0BGhvbWUJaW1hZ2UtYWx0BWltYWdlBGNvZGUFbWVkYWwJbWVkYWwtYWx0BWxhYmVsCWxhYmVsLWFsdAljb21tZW50LW8NY29tbWVudC1vLWFsdA1tb3JlLXZlcnRpY2FsBHNhbGUIc2FsZS1hbHQFY2hlY2sFdGltZXMHY2hlY2stbwtjaGVjay1vLWFsdAd0aW1lcy1vC3RpbWVzLW8tYWx0BnBsdXMtbwpwbHVzLW8tYWx0BHBsdXMEZG93bgVtaW51cwttaW51cy1vLWFsdAdtaW51cy1vBGNvcHkFcm9vdGYKcnViYmVyLWFsdAZydWJiZXIHZXllLW9mZgNleWUQc2hhcmUtc3F1YXJlLWFsdAVzaGFyZQlzaGFyZS1hbHQEbW9yZQRzY2FuBHNlbmQIc2VuZC1hbHQKc3RhcnQtaGFsZghzdGFyLWFsdARzdGFyC3VzZXItcmVtb3ZlD3VzZXItcmVtb3ZlLWFsdAR1c2VyDHVzZXItY29nLWFsdAt1c2VyLXNxdWFyZQ91c2VyLXNxdWFyZS1hbHQKdXNlci1vLWFsdAZ1c2VyLW8QdXNlci1jb250YWN0LWFsdA11c2VyLWxvY2stYWx0DHVzZXItY29udGFjdAl1c2VyLWxvY2sKdXNlci1ncm91cA11c2VyLXBsdXMtYWx0CHVzZXItYWx0DnVzZXItZ3JvdXAtYWx0CXVzZXItcGx1cwt1c2VyLXNlYXJjaA51c2VyLWNoZWNrLWFsdA91c2VyLXNlYXJjaC1hbHQRdXNlci1iYWNrd2FyZC1hbHQMdXNlci1mb3J3YXJkEHVzZXItZm9yd2FyZC1hbHQKdXNlci1jaGVjaw11c2VyLWJhY2t3YXJkDXVzZXItc3Rhci1hbHQJdXNlci1zdGFyCHVzZXItY29nBHdpZmkIY2FsZW5kYXIHZGl2aWRlcgxjb21wdXRlci1hbHQIZG93bmxvYWQMY2hlY2stc3F1YXJlCmRvd25sb2FkLW8OZG93bmxvYWQtY2xvdWQGZG9sbGFyEmRvd25sb2FkLWNsb3VkLWFsdANlaXQGZmVtYWxlEGV4aXQtZnVsbC1zY3JlZW4GZm9yYmlkCWhhbmQtaGF0ZQZnaXRodWIKZm9yYmlkLWFsdAtmdWxsLXNjcmVlbg1oYW5kLWhhdGUtYWx0CWhhbmQtbGlrZQ1oYW5kLWxpa2UtYWx0DXN0cmlrZXRocm91Z2gLaGFuZC1saWtlLW8LaW5kZW50LWxlZnQMaW5kZW50LXJpZ2h0Bml0YWxpYwtsaW5lLWhlaWdodARsaW5rBGxvdmUGbG9hZC1hBmxvYWQtZARsb2NrCGxvdmUtYWx0BmxvYWQtYgRtYWxlA21hcANtYW4IbG9jay1hbHQFbWFwLW8ObWFwLXNxdWFyZS1hbHQKbWljcm9waG9uZQZsb2FkLWUObWljcm9waG9uZS1hbHQHbWFwLWFsdA9taWNyb3Bob25lLW11dGUTbWljcm9waG9uZS1tdXRlLWFsdAZtb2JpbGUFbXVzaWMJcGFyYWdyYXBoAm9sBmxvYWQtYwZwZW5jaWwKcGVuY2lsLWFsdAltdXNpYy1hbHQKcGxheS1vLWFsdAVwaG9uZQlwaG9uZS1hbHQGcXJjb2RlBHJlZG8HcmVmcmVzaAhyZWRvLWFsdARzYWZlBnNlYXJjaA5zZWFyY2gtbWludXMtbw1zZWFyY2gtcGx1cy1vCXJlZnJlc2gtYQRzaG9wDXNob3BwaW5nLWNhcnQIc2lnbi1vdXQIc2FmZS1hbHQRc2hvcHBpbmctY2FydC1hbHQIc2hvcC1hbHQGc3dpdGNoCXN1YnNjcmlwdAdzaWduLWluCXRhYmxlLWFsdAV0cmFzaAl0cmFzaC1hbHQLc3VwZXJzY3JpcHQMYWxpZ24tY2VudGVyDWFsaWduLWp1c3RpZnkLYWxpZ24tcmlnaHQKYWxpZ24tbGVmdAxhbmdsZS1kb3duLW8CdWwKYW5nbGUtZG93bhFhbmdsZS1kb3VibGUtZG93bgxhbmdsZS1sZWZ0LW8IdW5kby1hbHQPYW5nbGUtZG91YmxlLXVwBnRhYmxldAphbmdsZS1sZWZ0CXVuZGVybGluZRJhbmdsZS1kb3VibGUtcmlnaHQKdW5sb2NrLWFsdBFhbmdsZS1kb3VibGUtbGVmdAhhbmdsZS11cAR1bmRvC2FuZ2xlLXJpZ2h0BnVubG9jawx1cGxvYWQtY2xvdWQRYW5nbGUtcmlnaHQtby1hbHQQdXBsb2FkLWNsb3VkLWFsdAphbmdsZS11cC1vBnVwbG9hZA1hbmdsZS1yaWdodC1vDXVwbG9hZC1zcXVhcmUKYXJyb3ctZG93bhBhcnJvdy1kb3duLW8tYWx0BnVubGluawxhcnJvdy1kb3duLW8QYW5nbGUtbGVmdC1vLWFsdAxhcnJvdy1sZWZ0LW8QYXJyb3ctbGVmdC1vLWFsdA1hcnJvdy1yaWdodC1vEGFuZ2xlLWRvd24tby1hbHQKYXJyb3ctdXAtbxFhcnJvdy1yaWdodC1vLWFsdAhhcnJvdy11cAphcnJvdy1sZWZ0C2Fycm93LXJpZ2h0DmFuZ2xlLXVwLW8tYWx0BXdvbWFuDmFycm93LXVwLW8tYWx0CGNhcmQtYWx0CmNhcmV0LWRvd24KY2FtZXJhLWFsdARjYXJkCGNhcmV0LXVwBmNhbWVyYQlidWxsLWhvcm4LY2FyZXQtcmlnaHQEYm9sZAVjbGVhcgpjYXJldC1sZWZ0BWNsb2NrCWNsb2NrLWFsdAljbGVhci1hbHQIY29tcHV0ZXIMY29sb3ItcGlja2VyAAAAAAA=) format("truetype")}.icon-turn-arrow-text[data-v-a9ec4f65]:before{content:""}.icon-turn-arrow-round[data-v-a9ec4f65]:before{content:""}.icon-turn-arrow[data-v-a9ec4f65]:before{content:""}.icon-code-block[data-v-a9ec4f65]:before{content:""}.icon-double-circle[data-v-a9ec4f65]:before{content:""}.icon-left-rotate[data-v-a9ec4f65]:before{content:""}.icon-right-rotate[data-v-a9ec4f65]:before{content:""}.icon-weibo[data-v-a9ec4f65]:before{content:""}.icon-wx[data-v-a9ec4f65]:before{content:""}.icon-apple[data-v-a9ec4f65]:before{content:""}.icon-set[data-v-a9ec4f65]:before{content:""}.icon-weibo-square[data-v-a9ec4f65]:before{content:""}.icon-wx-square[data-v-a9ec4f65]:before{content:""}.icon-qq[data-v-a9ec4f65]:before{content:""}.icon-android[data-v-a9ec4f65]:before{content:""}.icon-wx-pay[data-v-a9ec4f65]:before{content:""}.icon-ali-pay[data-v-a9ec4f65]:before{content:""}.icon-wx-o[data-v-a9ec4f65]:before{content:""}.icon-windows[data-v-a9ec4f65]:before{content:""}.icon-douyin[data-v-a9ec4f65]:before{content:""}.icon-mini[data-v-a9ec4f65]:before{content:""}.icon-mini-alt[data-v-a9ec4f65]:before{content:""}.icon-brush[data-v-a9ec4f65]:before{content:""}.icon-quote[data-v-a9ec4f65]:before{content:""}.icon-font-size[data-v-a9ec4f65]:before{content:""}.icon-info[data-v-a9ec4f65]:before{content:""}.icon-info-o-alt[data-v-a9ec4f65]:before{content:""}.icon-error-o-alt[data-v-a9ec4f65]:before{content:""}.icon-error[data-v-a9ec4f65]:before{content:""}.icon-error-o[data-v-a9ec4f65]:before{content:""}.icon-info-o[data-v-a9ec4f65]:before{content:""}.icon-success-o[data-v-a9ec4f65]:before{content:""}.icon-success-o-alt[data-v-a9ec4f65]:before{content:""}.icon-success[data-v-a9ec4f65]:before{content:""}.icon-plus-square[data-v-a9ec4f65]:before{content:""}.icon-minus-square[data-v-a9ec4f65]:before{content:""}.icon-minus-square-alt[data-v-a9ec4f65]:before{content:""}.icon-plus-square-alt[data-v-a9ec4f65]:before{content:""}.icon-bars[data-v-a9ec4f65]:before{content:""}.icon-editor[data-v-a9ec4f65]:before{content:""}.icon-image-error[data-v-a9ec4f65]:before{content:""}.icon-customer-service[data-v-a9ec4f65]:before{content:""}.icon-bug[data-v-a9ec4f65]:before{content:""}.icon-chart-polygonal[data-v-a9ec4f65]:before{content:""}.icon-font-title[data-v-a9ec4f65]:before{content:""}.icon-random[data-v-a9ec4f65]:before{content:""}.icon-sequential[data-v-a9ec4f65]:before{content:""}.icon-single-loop[data-v-a9ec4f65]:before{content:""}.icon-loop[data-v-a9ec4f65]:before{content:""}.icon-pause[data-v-a9ec4f65]:before{content:""}.icon-backward[data-v-a9ec4f65]:before{content:""}.icon-fast-backward[data-v-a9ec4f65]:before{content:""}.icon-forward[data-v-a9ec4f65]:before{content:""}.icon-fast-forward[data-v-a9ec4f65]:before{content:""}.icon-menu-unfold[data-v-a9ec4f65]:before{content:""}.icon-menu-fold[data-v-a9ec4f65]:before{content:""}.icon-step-backward[data-v-a9ec4f65]:before{content:""}.icon-step-forward[data-v-a9ec4f65]:before{content:""}.icon-step-forward-alt[data-v-a9ec4f65]:before{content:""}.icon-step-backward-alt[data-v-a9ec4f65]:before{content:""}.icon-play-o[data-v-a9ec4f65]:before{content:""}.icon-play[data-v-a9ec4f65]:before{content:""}.icon-pause-o[data-v-a9ec4f65]:before{content:""}.icon-pause-o-alt[data-v-a9ec4f65]:before{content:""}.icon-partten-chart[data-v-a9ec4f65]:before{content:""}.icon-chart-bar[data-v-a9ec4f65]:before{content:""}.icon-bell-slash-alt[data-v-a9ec4f65]:before{content:""}.icon-bell-slash[data-v-a9ec4f65]:before{content:""}.icon-bell[data-v-a9ec4f65]:before{content:""}.icon-bell-alt[data-v-a9ec4f65]:before{content:""}.icon-cloud-alt[data-v-a9ec4f65]:before{content:""}.icon-cloud[data-v-a9ec4f65]:before{content:""}.icon-login[data-v-a9ec4f65]:before{content:""}.icon-logout[data-v-a9ec4f65]:before{content:""}.icon-comment[data-v-a9ec4f65]:before{content:""}.icon-comment-alt[data-v-a9ec4f65]:before{content:""}.icon-onedrive[data-v-a9ec4f65]:before{content:""}.icon-theme[data-v-a9ec4f65]:before{content:""}.icon-theme-alt[data-v-a9ec4f65]:before{content:""}.icon-hot[data-v-a9ec4f65]:before{content:""}.icon-classification[data-v-a9ec4f65]:before{content:""}.icon-email-alt[data-v-a9ec4f65]:before{content:""}.icon-email[data-v-a9ec4f65]:before{content:""}.icon-cut[data-v-a9ec4f65]:before{content:""}.icon-paste[data-v-a9ec4f65]:before{content:""}.icon-file-plus-alt[data-v-a9ec4f65]:before{content:""}.icon-file-check[data-v-a9ec4f65]:before{content:""}.icon-file-image-alt[data-v-a9ec4f65]:before{content:""}.icon-file-minus-alt[data-v-a9ec4f65]:before{content:""}.icon-folder-plus[data-v-a9ec4f65]:before{content:""}.icon-file-plus[data-v-a9ec4f65]:before{content:""}.icon-file-minus[data-v-a9ec4f65]:before{content:""}.icon-file-image[data-v-a9ec4f65]:before{content:""}.icon-file-check-alt[data-v-a9ec4f65]:before{content:""}.icon-folder-minus[data-v-a9ec4f65]:before{content:""}.icon-folder-minus-alt[data-v-a9ec4f65]:before{content:""}.icon-folder-plus-alt[data-v-a9ec4f65]:before{content:""}.icon-folder-open[data-v-a9ec4f65]:before{content:""}.icon-folder-open-alt[data-v-a9ec4f65]:before{content:""}.icon-folder-alt[data-v-a9ec4f65]:before{content:""}.icon-folder[data-v-a9ec4f65]:before{content:""}.icon-exchange[data-v-a9ec4f65]:before{content:""}.icon-font-minus[data-v-a9ec4f65]:before{content:""}.icon-font-plus[data-v-a9ec4f65]:before{content:""}.icon-font[data-v-a9ec4f65]:before{content:""}.icon-horn-down[data-v-a9ec4f65]:before{content:""}.icon-horn-up[data-v-a9ec4f65]:before{content:""}.icon-horn-down-alt[data-v-a9ec4f65]:before{content:""}.icon-horn-mute[data-v-a9ec4f65]:before{content:""}.icon-horn-mute-alt[data-v-a9ec4f65]:before{content:""}.icon-horn-up-alt[data-v-a9ec4f65]:before{content:""}.icon-cogs-alt[data-v-a9ec4f65]:before{content:""}.icon-cogs[data-v-a9ec4f65]:before{content:""}.icon-file-alt[data-v-a9ec4f65]:before{content:""}.icon-file[data-v-a9ec4f65]:before{content:""}.icon-edit[data-v-a9ec4f65]:before{content:""}.icon-emoji[data-v-a9ec4f65]:before{content:""}.icon-emoji-alt[data-v-a9ec4f65]:before{content:""}.icon-cog[data-v-a9ec4f65]:before{content:""}.icon-cog-alt[data-v-a9ec4f65]:before{content:""}.icon-video-alt[data-v-a9ec4f65]:before{content:""}.icon-video[data-v-a9ec4f65]:before{content:""}.icon-hand-up-alt[data-v-a9ec4f65]:before{content:""}.icon-hand-left-alt[data-v-a9ec4f65]:before{content:""}.icon-hand-down-alt[data-v-a9ec4f65]:before{content:""}.icon-hand-right-alt[data-v-a9ec4f65]:before{content:""}.icon-hand-down[data-v-a9ec4f65]:before{content:""}.icon-hand-left[data-v-a9ec4f65]:before{content:""}.icon-hand-right[data-v-a9ec4f65]:before{content:""}.icon-hand-up[data-v-a9ec4f65]:before{content:""}.icon-images[data-v-a9ec4f65]:before{content:""}.icon-images-alt[data-v-a9ec4f65]:before{content:""}.icon-home-alt[data-v-a9ec4f65]:before{content:""}.icon-home[data-v-a9ec4f65]:before{content:""}.icon-image-alt[data-v-a9ec4f65]:before{content:""}.icon-image[data-v-a9ec4f65]:before{content:""}.icon-code[data-v-a9ec4f65]:before{content:""}.icon-medal[data-v-a9ec4f65]:before{content:""}.icon-medal-alt[data-v-a9ec4f65]:before{content:""}.icon-label[data-v-a9ec4f65]:before{content:""}.icon-label-alt[data-v-a9ec4f65]:before{content:""}.icon-comment-o[data-v-a9ec4f65]:before{content:""}.icon-comment-o-alt[data-v-a9ec4f65]:before{content:""}.icon-more-vertical[data-v-a9ec4f65]:before{content:""}.icon-sale[data-v-a9ec4f65]:before{content:""}.icon-sale-alt[data-v-a9ec4f65]:before{content:""}.icon-check[data-v-a9ec4f65]:before{content:""}.icon-times[data-v-a9ec4f65]:before{content:""}.icon-check-o[data-v-a9ec4f65]:before{content:""}.icon-check-o-alt[data-v-a9ec4f65]:before{content:""}.icon-times-o[data-v-a9ec4f65]:before{content:""}.icon-times-o-alt[data-v-a9ec4f65]:before{content:""}.icon-plus-o[data-v-a9ec4f65]:before{content:""}.icon-plus-o-alt[data-v-a9ec4f65]:before{content:""}.icon-plus[data-v-a9ec4f65]:before{content:""}.icon-down[data-v-a9ec4f65]:before{content:""}.icon-minus[data-v-a9ec4f65]:before{content:""}.icon-minus-o-alt[data-v-a9ec4f65]:before{content:""}.icon-minus-o[data-v-a9ec4f65]:before{content:""}.icon-copy[data-v-a9ec4f65]:before{content:""}.icon-rootf[data-v-a9ec4f65]:before{content:""}.icon-rubber-alt[data-v-a9ec4f65]:before{content:""}.icon-rubber[data-v-a9ec4f65]:before{content:""}.icon-eye-off[data-v-a9ec4f65]:before{content:""}.icon-eye[data-v-a9ec4f65]:before{content:""}.icon-share-square-alt[data-v-a9ec4f65]:before{content:""}.icon-share[data-v-a9ec4f65]:before{content:""}.icon-share-alt[data-v-a9ec4f65]:before{content:""}.icon-more[data-v-a9ec4f65]:before{content:""}.icon-scan[data-v-a9ec4f65]:before{content:""}.icon-send[data-v-a9ec4f65]:before{content:""}.icon-send-alt[data-v-a9ec4f65]:before{content:""}.icon-start-half[data-v-a9ec4f65]:before{content:""}.icon-star-alt[data-v-a9ec4f65]:before{content:""}.icon-star[data-v-a9ec4f65]:before{content:""}.icon-user-remove[data-v-a9ec4f65]:before{content:""}.icon-user-remove-alt[data-v-a9ec4f65]:before{content:""}.icon-user[data-v-a9ec4f65]:before{content:""}.icon-user-cog-alt[data-v-a9ec4f65]:before{content:""}.icon-user-square[data-v-a9ec4f65]:before{content:""}.icon-user-square-alt[data-v-a9ec4f65]:before{content:""}.icon-user-o-alt[data-v-a9ec4f65]:before{content:""}.icon-user-o[data-v-a9ec4f65]:before{content:""}.icon-user-contact-alt[data-v-a9ec4f65]:before{content:""}.icon-user-lock-alt[data-v-a9ec4f65]:before{content:""}.icon-user-contact[data-v-a9ec4f65]:before{content:""}.icon-user-lock[data-v-a9ec4f65]:before{content:""}.icon-user-group[data-v-a9ec4f65]:before{content:""}.icon-user-plus-alt[data-v-a9ec4f65]:before{content:""}.icon-user-alt[data-v-a9ec4f65]:before{content:""}.icon-user-group-alt[data-v-a9ec4f65]:before{content:""}.icon-user-plus[data-v-a9ec4f65]:before{content:""}.icon-user-search[data-v-a9ec4f65]:before{content:""}.icon-user-check-alt[data-v-a9ec4f65]:before{content:""}.icon-user-search-alt[data-v-a9ec4f65]:before{content:""}.icon-user-backward-alt[data-v-a9ec4f65]:before{content:""}.icon-user-forward[data-v-a9ec4f65]:before{content:""}.icon-user-forward-alt[data-v-a9ec4f65]:before{content:""}.icon-user-check[data-v-a9ec4f65]:before{content:""}.icon-user-backward[data-v-a9ec4f65]:before{content:""}.icon-user-star-alt[data-v-a9ec4f65]:before{content:""}.icon-user-star[data-v-a9ec4f65]:before{content:""}.icon-user-cog[data-v-a9ec4f65]:before{content:""}.icon-wifi[data-v-a9ec4f65]:before{content:""}.icon-calendar[data-v-a9ec4f65]:before{content:""}.icon-divider[data-v-a9ec4f65]:before{content:""}.icon-computer-alt[data-v-a9ec4f65]:before{content:""}.icon-download[data-v-a9ec4f65]:before{content:""}.icon-check-square[data-v-a9ec4f65]:before{content:""}.icon-download-o[data-v-a9ec4f65]:before{content:""}.icon-download-cloud[data-v-a9ec4f65]:before{content:""}.icon-dollar[data-v-a9ec4f65]:before{content:""}.icon-download-cloud-alt[data-v-a9ec4f65]:before{content:""}.icon-eit[data-v-a9ec4f65]:before{content:""}.icon-female[data-v-a9ec4f65]:before{content:""}.icon-exit-full-screen[data-v-a9ec4f65]:before{content:""}.icon-forbid[data-v-a9ec4f65]:before{content:""}.icon-hand-hate[data-v-a9ec4f65]:before{content:""}.icon-github[data-v-a9ec4f65]:before{content:""}.icon-forbid-alt[data-v-a9ec4f65]:before{content:""}.icon-full-screen[data-v-a9ec4f65]:before{content:""}.icon-hand-hate-alt[data-v-a9ec4f65]:before{content:""}.icon-hand-like[data-v-a9ec4f65]:before{content:""}.icon-hand-like-alt[data-v-a9ec4f65]:before{content:""}.icon-strikethrough[data-v-a9ec4f65]:before{content:""}.icon-hand-like-o[data-v-a9ec4f65]:before{content:""}.icon-indent-left[data-v-a9ec4f65]:before{content:""}.icon-indent-right[data-v-a9ec4f65]:before{content:""}.icon-italic[data-v-a9ec4f65]:before{content:""}.icon-line-height[data-v-a9ec4f65]:before{content:""}.icon-link[data-v-a9ec4f65]:before{content:""}.icon-love[data-v-a9ec4f65]:before{content:""}.icon-load-a[data-v-a9ec4f65]:before{content:""}.icon-load-d[data-v-a9ec4f65]:before{content:""}.icon-lock[data-v-a9ec4f65]:before{content:""}.icon-love-alt[data-v-a9ec4f65]:before{content:""}.icon-load-b[data-v-a9ec4f65]:before{content:""}.icon-male[data-v-a9ec4f65]:before{content:""}.icon-map[data-v-a9ec4f65]:before{content:""}.icon-man[data-v-a9ec4f65]:before{content:""}.icon-lock-alt[data-v-a9ec4f65]:before{content:""}.icon-map-o[data-v-a9ec4f65]:before{content:""}.icon-map-square-alt[data-v-a9ec4f65]:before{content:""}.icon-microphone[data-v-a9ec4f65]:before{content:""}.icon-load-e[data-v-a9ec4f65]:before{content:""}.icon-microphone-alt[data-v-a9ec4f65]:before{content:""}.icon-map-alt[data-v-a9ec4f65]:before{content:""}.icon-microphone-mute[data-v-a9ec4f65]:before{content:""}.icon-microphone-mute-alt[data-v-a9ec4f65]:before{content:""}.icon-mobile[data-v-a9ec4f65]:before{content:""}.icon-music[data-v-a9ec4f65]:before{content:""}.icon-paragraph[data-v-a9ec4f65]:before{content:""}.icon-ol[data-v-a9ec4f65]:before{content:""}.icon-load-c[data-v-a9ec4f65]:before{content:""}.icon-pencil[data-v-a9ec4f65]:before{content:""}.icon-pencil-alt[data-v-a9ec4f65]:before{content:""}.icon-music-alt[data-v-a9ec4f65]:before{content:""}.icon-play-o-alt[data-v-a9ec4f65]:before{content:""}.icon-phone[data-v-a9ec4f65]:before{content:""}.icon-phone-alt[data-v-a9ec4f65]:before{content:""}.icon-qrcode[data-v-a9ec4f65]:before{content:""}.icon-redo[data-v-a9ec4f65]:before{content:""}.icon-refresh[data-v-a9ec4f65]:before{content:""}.icon-redo-alt[data-v-a9ec4f65]:before{content:""}.icon-safe[data-v-a9ec4f65]:before{content:""}.icon-search[data-v-a9ec4f65]:before{content:""}.icon-search-minus-o[data-v-a9ec4f65]:before{content:""}.icon-search-plus-o[data-v-a9ec4f65]:before{content:""}.icon-refresh-a[data-v-a9ec4f65]:before{content:""}.icon-shop[data-v-a9ec4f65]:before{content:""}.icon-shopping-cart[data-v-a9ec4f65]:before{content:""}.icon-sign-out[data-v-a9ec4f65]:before{content:""}.icon-safe-alt[data-v-a9ec4f65]:before{content:""}.icon-shopping-cart-alt[data-v-a9ec4f65]:before{content:""}.icon-shop-alt[data-v-a9ec4f65]:before{content:""}.icon-switch[data-v-a9ec4f65]:before{content:""}.icon-subscript[data-v-a9ec4f65]:before{content:""}.icon-sign-in[data-v-a9ec4f65]:before{content:""}.icon-table-alt[data-v-a9ec4f65]:before{content:""}.icon-trash[data-v-a9ec4f65]:before{content:""}.icon-trash-alt[data-v-a9ec4f65]:before{content:""}.icon-superscript[data-v-a9ec4f65]:before{content:""}.icon-align-center[data-v-a9ec4f65]:before{content:""}.icon-align-justify[data-v-a9ec4f65]:before{content:""}.icon-align-right[data-v-a9ec4f65]:before{content:""}.icon-align-left[data-v-a9ec4f65]:before{content:""}.icon-angle-down-o[data-v-a9ec4f65]:before{content:""}.icon-ul[data-v-a9ec4f65]:before{content:""}.icon-angle-down[data-v-a9ec4f65]:before{content:""}.icon-angle-double-down[data-v-a9ec4f65]:before{content:""}.icon-angle-left-o[data-v-a9ec4f65]:before{content:""}.icon-undo-alt[data-v-a9ec4f65]:before{content:""}.icon-angle-double-up[data-v-a9ec4f65]:before{content:""}.icon-tablet[data-v-a9ec4f65]:before{content:""}.icon-angle-left[data-v-a9ec4f65]:before{content:""}.icon-underline[data-v-a9ec4f65]:before{content:""}.icon-angle-double-right[data-v-a9ec4f65]:before{content:""}.icon-unlock-alt[data-v-a9ec4f65]:before{content:""}.icon-angle-double-left[data-v-a9ec4f65]:before{content:""}.icon-angle-up[data-v-a9ec4f65]:before{content:""}.icon-undo[data-v-a9ec4f65]:before{content:""}.icon-angle-right[data-v-a9ec4f65]:before{content:""}.icon-unlock[data-v-a9ec4f65]:before{content:""}.icon-upload-cloud[data-v-a9ec4f65]:before{content:""}.icon-angle-right-o-alt[data-v-a9ec4f65]:before{content:""}.icon-upload-cloud-alt[data-v-a9ec4f65]:before{content:""}.icon-angle-up-o[data-v-a9ec4f65]:before{content:""}.icon-upload[data-v-a9ec4f65]:before{content:""}.icon-angle-right-o[data-v-a9ec4f65]:before{content:""}.icon-upload-square[data-v-a9ec4f65]:before{content:""}.icon-arrow-down[data-v-a9ec4f65]:before{content:""}.icon-arrow-down-o-alt[data-v-a9ec4f65]:before{content:""}.icon-unlink[data-v-a9ec4f65]:before{content:""}.icon-arrow-down-o[data-v-a9ec4f65]:before{content:""}.icon-angle-left-o-alt[data-v-a9ec4f65]:before{content:""}.icon-arrow-left-o[data-v-a9ec4f65]:before{content:""}.icon-arrow-left-o-alt[data-v-a9ec4f65]:before{content:""}.icon-arrow-right-o[data-v-a9ec4f65]:before{content:""}.icon-angle-down-o-alt[data-v-a9ec4f65]:before{content:""}.icon-arrow-up-o[data-v-a9ec4f65]:before{content:""}.icon-arrow-right-o-alt[data-v-a9ec4f65]:before{content:""}.icon-arrow-up[data-v-a9ec4f65]:before{content:""}.icon-arrow-left[data-v-a9ec4f65]:before{content:""}.icon-arrow-right[data-v-a9ec4f65]:before{content:""}.icon-angle-up-o-alt[data-v-a9ec4f65]:before{content:""}.icon-woman[data-v-a9ec4f65]:before{content:""}.icon-arrow-up-o-alt[data-v-a9ec4f65]:before{content:""}.icon-card-alt[data-v-a9ec4f65]:before{content:""}.icon-caret-down[data-v-a9ec4f65]:before{content:""}.icon-camera-alt[data-v-a9ec4f65]:before{content:""}.icon-card[data-v-a9ec4f65]:before{content:""}.icon-caret-up[data-v-a9ec4f65]:before{content:""}.icon-camera[data-v-a9ec4f65]:before{content:""}.icon-bull-horn[data-v-a9ec4f65]:before{content:""}.icon-caret-right[data-v-a9ec4f65]:before{content:""}.icon-bold[data-v-a9ec4f65]:before{content:""}.icon-clear[data-v-a9ec4f65]:before{content:""}.icon-caret-left[data-v-a9ec4f65]:before{content:""}.icon-clock[data-v-a9ec4f65]:before{content:""}.icon-clock-alt[data-v-a9ec4f65]:before{content:""}.icon-clear-alt[data-v-a9ec4f65]:before{content:""}.icon-computer[data-v-a9ec4f65]:before{content:""}.icon-color-picker[data-v-a9ec4f65]:before{content:""}.mvi-icon[data-v-a9ec4f65]{display:inline-flex;font-family:mvi-icon!important;font-style:normal;vertical-align:middle;justify-content:center;align-items:center;font-size:inherit;line-height:1}.mvi-icon.spin[data-v-a9ec4f65]{animation:spin-a9ec4f65 1.4s linear infinite}.mvi-icon-url[data-v-a9ec4f65]{display:inline-block;width:.28rem;height:.28rem;vertical-align:middle;background-size:cover;background-repeat:no-repeat;background-position:center}.mvi-icon-url.spin[data-v-a9ec4f65]{animation:spin-a9ec4f65 1.4s linear infinite}@keyframes spin-a9ec4f65{0%{transform:rotate(0);transform-origin:center}to{transform:rotate(360deg);transform-origin:center}}@-webkit-keyframes spin-a9ec4f65{0%{transform:rotate(0);transform-origin:center}to{transform:rotate(360deg);transform-origin:center}}.mvi-badge[data-v-a2f4d62a]{position:relative;display:inline-block}.mvi-badge.block[data-v-a2f4d62a]{display:block;width:100%}.mvi-badge .mvi-badge-el[data-v-a2f4d62a]{position:absolute;display:inline-flex;justify-content:center;align-items:center;background:var(--mvi-error-normal);color:#fff;padding:0 .1rem;border-radius:999rem;font-size:.24rem;line-height:1;min-width:.34rem;height:.34rem;z-index:40}.mvi-badge .mvi-badge-el[data-placement=top-right][data-v-a2f4d62a]{left:auto;bottom:auto;right:0;top:0;transform:translate(50%,-50%)}.mvi-badge .mvi-badge-el[data-placement=top-left][data-v-a2f4d62a]{left:0;top:0;right:auto;bottom:auto;transform:translate(-50%,-50%)}.mvi-badge .mvi-badge-el[data-placement=bottom-right][data-v-a2f4d62a]{right:0;bottom:0;left:auto;top:auto;transform:translate(50%,50%)}.mvi-badge .mvi-badge-el[data-placement=bottom-left][data-v-a2f4d62a]{left:0;bottom:0;right:auto;top:auto;transform:translate(-50%,50%)}.mvi-badge .mvi-badge-el.mvi-badge-dot[data-v-a2f4d62a]{padding:0;border-radius:50%;min-width:0;width:.18rem;height:.18rem}.mvi-button[data-v-724311f6]{position:relative;display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;text-align:center;white-space:nowrap;border:1px solid transparent;background:none;outline:0;touch-action:manipulation;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:none;user-select:none;margin:0;padding:0;border-radius:.08rem;cursor:pointer}.mvi-button.default[data-v-724311f6]{color:var(--mvi-font-color-default);border-color:var(--mvi-border-color);background:var(--mvi-bg-color-common)}.mvi-button.default.active[data-v-724311f6]:active:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:var(--mvi-bg-color-active);border:inherit;border-color:var(--mvi-bg-color-active);border-radius:inherit;transform:translate(-50%,-50%);opacity:.1;content:" ";box-sizing:content-box}.mvi-button.warn[data-v-724311f6]{background:var(--mvi-warn-normal);border-color:var(--mvi-warn-normal);color:#fff}.mvi-button.warn.plain[data-v-724311f6]{color:var(--mvi-warn-normal);border-color:var(--mvi-warn-normal);background:var(--mvi-bg-color-common)}.mvi-button.warn.plain.active[data-v-724311f6]:active:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:var(--mvi-warn-normal);border:inherit;border-color:var(--mvi-warn-normal);border-radius:inherit;transform:translate(-50%,-50%);opacity:.1;content:" ";box-sizing:content-box}.mvi-button.error[data-v-724311f6]{background:var(--mvi-error-normal);border-color:var(--mvi-error-normal);color:#fff}.mvi-button.error.plain[data-v-724311f6]{color:var(--mvi-error-normal);border-color:var(--mvi-error-normal);background:var(--mvi-bg-color-common)}.mvi-button.error.plain.active[data-v-724311f6]:active:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:var(--mvi-error-normal);border:inherit;border-color:var(--mvi-error-normal);border-radius:inherit;transform:translate(-50%,-50%);opacity:.1;content:" ";box-sizing:content-box}.mvi-button.success[data-v-724311f6]{background:var(--mvi-success-normal);border-color:var(--mvi-success-normal);color:#fff}.mvi-button.success.plain[data-v-724311f6]{color:var(--mvi-success-normal);border-color:var(--mvi-success-normal);background:var(--mvi-bg-color-common)}.mvi-button.success.plain.active[data-v-724311f6]:active:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:var(--mvi-success-normal);border:inherit;border-color:var(--mvi-success-normal);border-radius:inherit;transform:translate(-50%,-50%);opacity:.1;content:" ";box-sizing:content-box}.mvi-button.info[data-v-724311f6]{background:var(--mvi-info-normal);border-color:var(--mvi-info-normal);color:#fff}.mvi-button.info.plain[data-v-724311f6]{color:var(--mvi-info-normal);border-color:var(--mvi-info-normal);background:var(--mvi-bg-color-common)}.mvi-button.info.plain.active[data-v-724311f6]:active:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:var(--mvi-info-normal);border:inherit;border-color:var(--mvi-info-normal);border-radius:inherit;transform:translate(-50%,-50%);opacity:.1;content:" ";box-sizing:content-box}.mvi-button.primary[data-v-724311f6]{background:var(--mvi-primary-normal);border-color:var(--mvi-primary-normal);color:#fff}.mvi-button.primary.plain[data-v-724311f6]{color:var(--mvi-primary-normal);border-color:var(--mvi-primary-normal);background:var(--mvi-bg-color-common)}.mvi-button.primary.plain.active[data-v-724311f6]:active:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:var(--mvi-primary-normal);border:inherit;border-color:var(--mvi-primary-normal);border-radius:inherit;transform:translate(-50%,-50%);opacity:.1;content:" ";box-sizing:content-box}.mvi-button.mini[data-v-724311f6]{height:.6rem;padding:0 .1rem;font-size:.24rem}.mvi-button.small[data-v-724311f6]{font-size:.28rem;height:.72rem;padding:0 .2rem}.mvi-button.medium[data-v-724311f6]{font-size:.32rem;height:.88rem;padding:0 .3rem}.mvi-button.large[data-v-724311f6]{font-size:.36rem;height:1rem;padding:0 .4rem}.mvi-button.round[data-v-724311f6]{border-radius:999rem}.mvi-button.square[data-v-724311f6]{border-radius:0}.mvi-button.active[data-v-724311f6]:active:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:var(--mvi-bg-color-active);border:inherit;border-color:var(--mvi-bg-color-active);border-radius:inherit;transform:translate(-50%,-50%);opacity:.1;content:" ";box-sizing:content-box}.mvi-button[disabled][data-v-724311f6]{opacity:.6;touch-action:none}.mvi-button.block[data-v-724311f6]{display:flex;width:100%}.mvi-button.loading[data-v-724311f6]{pointer-events:none;touch-action:none;opacity:.8}.mvi-button .mvi-button-load-text[data-v-724311f6]{margin-left:.2rem}.mvi-triangle[data-v-068b0274]{position:relative;display:inline-block;width:0;height:0;border-color:transparent;border-style:solid}.mvi-triangle[data-placement=top][data-v-068b0274]{border-top:none;border-bottom-color:var(--mvi-border-color)}.mvi-triangle[data-placement=bottom][data-v-068b0274]{border-bottom:none;border-top-color:var(--mvi-border-color)}.mvi-triangle[data-placement=left][data-v-068b0274]{border-left:none;border-right-color:var(--mvi-border-color)}.mvi-triangle[data-placement=right][data-v-068b0274]{border-right:none;border-left-color:var(--mvi-border-color)}.mvi-triangle-el[data-v-068b0274]{position:absolute;display:inline-block;width:0;height:0;border-color:transparent;border-style:solid}.mvi-triangle-el[data-placement=top][data-v-068b0274]{border-top:none;border-bottom-color:var(--mvi-bg-color-common);left:1px;top:1.5px;right:auto;bottom:0}.mvi-triangle-el[data-placement=bottom][data-v-068b0274]{border-bottom:none;border-top-color:var(--mvi-bg-color-common);left:1px;bottom:1.5px;top:auto;right:auto}.mvi-triangle-el[data-placement=left][data-v-068b0274]{border-left:none;border-right-color:var(--mvi-bg-color-common);left:1.5px;top:1px;right:auto;bottom:auto}.mvi-triangle-el[data-placement=right][data-v-068b0274]{border-right:none;border-left-color:var(--mvi-bg-color-common);right:1.5px;top:1px;bottom:auto;left:auto}.mvi-layer[data-v-cbd07307]{position:fixed;z-index:400}.mvi-layer .mvi-layer-wrapper[data-v-cbd07307]{display:block;position:relative;width:100%;border-radius:.08rem;background:var(--mvi-bg-color-common)}.mvi-layer .mvi-layer-wrapper.shadow[data-v-cbd07307]{box-shadow:var(--mvi-boxshadow)}.mvi-layer .mvi-layer-wrapper.border[data-v-cbd07307]{border:1px solid var(--mvi-border-color)}.mvi-layer .mvi-layer-wrapper .mvi-layer-triangle[data-v-cbd07307]{position:absolute}.mvi-layer-enter-from[data-v-cbd07307],.mvi-layer-leave-to[data-v-cbd07307]{opacity:0;transform:translateY(.6rem)}.mvi-label[data-v-8546bce5]{display:inline-flex;justify-content:flex-start;align-items:center;border-radius:.04rem;border:1px solid transparent;margin:0}.mvi-label.medium[data-v-8546bce5]{padding:.1rem .2rem;font-size:.24rem;line-height:1}.mvi-label.large[data-v-8546bce5]{padding:.2rem .3rem;font-size:.28rem;line-height:1}.mvi-label.default[data-v-8546bce5]{background-color:rgba(var(--mvi-border-color),.05);border-color:var(--mvi-border-color);color:var(--mvi-font-color-sub)}.mvi-label.success[data-v-8546bce5]{background-color:var(--mvi-success-normal);border-color:var(--mvi-success-normal);color:#fff}.mvi-label.success.plain[data-v-8546bce5]{border-color:var(--mvi-success-normal);color:var(--mvi-success-normal);background-color:rgba(var(--mvi-success-normal),.05)}.mvi-label.warn[data-v-8546bce5]{background-color:var(--mvi-warn-normal);border-color:var(--mvi-warn-normal);color:#fff}.mvi-label.warn.plain[data-v-8546bce5]{background-color:rgba(var(--mvi-warn-normal),.05);border-color:var(--mvi-warn-normal);color:var(--mvi-warn-normal)}.mvi-label.error[data-v-8546bce5]{background-color:var(--mvi-error-normal);border-color:var(--mvi-error-normal);color:#fff}.mvi-label.error.plain[data-v-8546bce5]{background-color:rgba(var(--mvi-error-normal),.05);border-color:var(--mvi-error-normal);color:var(--mvi-error-normal)}.mvi-label.info[data-v-8546bce5]{background-color:var(--mvi-info-normal);border-color:var(--mvi-info-normal);color:#fff}.mvi-label.info.plain[data-v-8546bce5]{background-color:rgba(var(--mvi-info-normal),.05);border-color:var(--mvi-info-normal);color:var(--mvi-info-normal)}.mvi-label.primary[data-v-8546bce5]{background-color:var(--mvi-primary-normal);border-color:var(--mvi-primary-normal);color:#fff}.mvi-label.primary.plain[data-v-8546bce5]{background-color:rgba(var(--mvi-primary-normal),.05);border-color:var(--mvi-primary-normal);color:var(--mvi-primary-normal)}.mvi-label.round[data-v-8546bce5]{border-radius:999rem}.mvi-label.mark[data-v-8546bce5]{border-radius:0 999rem 999rem 0}.mvi-label.mark.reverse[data-v-8546bce5]{border-radius:999rem 0 0 999rem}.mvi-label.plain[data-v-8546bce5]{background-color:var(--mvi-bg-color-common)}.mvi-label .mvi-label-closable[data-v-8546bce5]{display:inline-block;margin-left:.2rem;font-size:.8em;opacity:.8;transition:opacity .3s}.mvi-label .mvi-label-closable[data-v-8546bce5]:hover{cursor:pointer;opacity:1}.mvi-label-enter-active[data-v-8546bce5],.mvi-label-leave-active[data-v-8546bce5]{transition:opacity .3s}.mvi-label-enter-from[data-v-8546bce5],.mvi-label-leave-to[data-v-8546bce5]{opacity:0}.mvi-input-container[data-v-c3814540]{display:flex;justify-content:flex-start;align-items:center;position:relative;background-color:var(--mvi-bg-color-common);color:var(--mvi-font-color-default);margin:0;vertical-align:middle;width:100%;padding:.2rem .3rem}.mvi-input-container.border[data-v-c3814540]:after{display:block;content:"";position:absolute;left:.2rem;bottom:0;width:calc(100% - .2rem);height:0;border-bottom:1px solid var(--mvi-border-color);box-sizing:content-box}.mvi-input-container.required[data-v-c3814540]:before{position:absolute;left:.1rem;top:50%;transform:translateY(-50%);display:flex;justify-content:center;align-items:center;content:"*";font-family:宋体,SimSun;color:var(--mvi-error-normal)}.mvi-input-container[disabled][data-v-c3814540]{opacity:.6}.mvi-input-container .mvi-input-label[data-v-c3814540]{display:flex;justify-content:flex-start;align-items:center;padding:0;position:relative;width:2rem;margin-right:.2rem;vertical-align:middle}.mvi-input-container .mvi-input-label span[data-v-c3814540]{display:block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mvi-input-container .mvi-input-left[data-v-c3814540]{display:flex;justify-content:center;align-items:center;vertical-align:middle;height:100%;margin-right:.2rem}.mvi-input-container .mvi-input-right[data-v-c3814540]{display:flex;justify-content:center;align-items:center;vertical-align:middle;height:100%;margin-left:.2rem}.mvi-input-container .mvi-input-clear[data-v-c3814540]{display:flex;justify-content:center;align-items:center;opacity:.5;padding:0;vertical-align:middle;cursor:pointer;height:100%;margin-left:.2rem}.mvi-input-container[data-type=textarea][data-v-c3814540]{align-items:flex-start}.mvi-input-container .mvi-input[data-v-c3814540]{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:block;width:100%;padding:0;border:none;border-radius:0;color:inherit;background-color:inherit;flex:1;font-family:PingFang SC,Helvetica Neue,Helvetica,Roboto,Segoe UI,Microsoft YaHei,Arial,sans-serif;background-image:none;font-size:inherit;margin:0}.mvi-input-container .mvi-input[data-v-c3814540]::-webkit-input-placeholder,.mvi-input-container .mvi-input[data-v-c3814540]::placeholder{color:inherit;font-family:inherit;font-size:inherit;opacity:.5;vertical-align:middle}.mvi-input-container .mvi-input[disabled][data-v-c3814540]{background-color:inherit;color:inherit;opacity:1}.mvi-input-container .mvi-textarea[data-v-c3814540]{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:block;padding:0;border:none;border-radius:0;color:inherit;background-color:inherit;width:100%;flex:1;font-family:PingFang SC,Helvetica Neue,Helvetica,Roboto,Segoe UI,Microsoft YaHei,Arial,sans-serif;background-image:none;margin:0;height:auto;resize:none;font-size:inherit}.mvi-input-container .mvi-textarea[data-v-c3814540]::-webkit-input-placeholder,.mvi-input-container .mvi-textarea[data-v-c3814540]::placeholder{color:inherit;opacity:.5;font-family:inherit;font-size:inherit;vertical-align:middle}.mvi-input-container.words[data-v-c3814540]{padding-bottom:.5rem}.mvi-input-container.words .mvi-input-words[data-v-c3814540]{position:absolute;bottom:.1rem;right:.2rem;width:100%;line-height:1;text-align:right;color:inherit;opacity:.5;font-size:.24rem}.mvi-input-container.medium[data-v-c3814540]{font-size:.28rem}.mvi-input-container.medium .mvi-input[data-v-c3814540],.mvi-input-container.medium .mvi-input-left[data-v-c3814540],.mvi-input-container.medium .mvi-input-right[data-v-c3814540],.mvi-input-container.medium .mvi-input-clear[data-v-c3814540],.mvi-input-container.medium .mvi-input-label[data-v-c3814540]{height:.48rem}.mvi-input-container.medium .mvi-textarea[data-v-c3814540]{line-height:.48rem}.mvi-input-container.large[data-v-c3814540]{font-size:.32rem}.mvi-input-container.large .mvi-input[data-v-c3814540],.mvi-input-container.large .mvi-input-left[data-v-c3814540],.mvi-input-container.large .mvi-input-right[data-v-c3814540],.mvi-input-container.large .mvi-input-clear[data-v-c3814540],.mvi-input-container.large .mvi-input-label[data-v-c3814540]{height:.6rem}.mvi-input-container.large .mvi-textarea[data-v-c3814540]{line-height:.6rem}.mvi-loading[data-v-3fd1dc78]{display:inline-flex;justify-content:center;align-items:center;position:relative}.mvi-loading svg[data-v-3fd1dc78]{margin:0;padding:0}@keyframes loading-3fd1dc78{0%{opacity:1}to{opacity:0}}.mvi-loading-default[data-v-3fd1dc78]{display:inline-block;position:relative}.mvi-loading-default>div[data-v-3fd1dc78]{display:inline-block;position:absolute;left:50%;top:0;transform:translate(-50%);animation:loading-3fd1dc78 linear .8s infinite;border-radius:.08rem}.mvi-loading-default>div[data-v-3fd1dc78]:nth-child(1){transform:rotate(0);animation-delay:-.73333333s}.mvi-loading-default>div[data-v-3fd1dc78]:nth-child(2){transform:rotate(30deg);animation-delay:-.66666667s}.mvi-loading-default>div[data-v-3fd1dc78]:nth-child(3){transform:rotate(60deg);animation-delay:-.6s}.mvi-loading-default>div[data-v-3fd1dc78]:nth-child(4){transform:rotate(90deg);animation-delay:-.53333333s}.mvi-loading-default>div[data-v-3fd1dc78]:nth-child(5){transform:rotate(120deg);animation-delay:-.46666667s}.mvi-loading-default>div[data-v-3fd1dc78]:nth-child(6){transform:rotate(150deg);animation-delay:-.4s}.mvi-loading-default>div[data-v-3fd1dc78]:nth-child(7){transform:rotate(180deg);animation-delay:-.33333333s}.mvi-loading-default>div[data-v-3fd1dc78]:nth-child(8){transform:rotate(210deg);animation-delay:-.26666667s}.mvi-loading-default>div[data-v-3fd1dc78]:nth-child(9){transform:rotate(240deg);animation-delay:-.2s}.mvi-loading-default>div[data-v-3fd1dc78]:nth-child(10){transform:rotate(270deg);animation-delay:-.13333333s}.mvi-loading-default>div[data-v-3fd1dc78]:nth-child(11){transform:rotate(300deg);animation-delay:-.06666667s}.mvi-loading-default>div[data-v-3fd1dc78]:nth-child(12){transform:rotate(330deg);animation-delay:0s}.mvi-loading-bar[data-v-74063300]{position:fixed;left:0;top:0;width:0;opacity:0;height:.04rem;background-color:var(--mvi-success-normal);z-index:3000}.mvi-msgbox[data-v-efa77df3]{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);display:block;width:auto;height:auto;max-width:90%;word-wrap:break-word;border-radius:.08rem;overflow:hidden;border:none;text-align:center;font-size:.28rem;line-height:1.5;padding:.2rem .4rem;background-color:#1a1a1ab3;color:#fff;box-shadow:var(--mvi-boxshadow)}.mvi-msgbox.mvi-msgbox-translate[data-v-efa77df3]{top:auto;bottom:0;transform:translate(-50%,calc(-50% - 3rem))}.mvi-msgbox-fade-enter-from[data-v-efa77df3],.mvi-msgbox-fade-leave-to[data-v-efa77df3]{opacity:0}.mvi-msgbox-fade-enter-active[data-v-efa77df3],.mvi-msgbox-fade-leave-active[data-v-efa77df3]{transition:opacity .3s}.mvi-msgbox-scale-enter-from[data-v-efa77df3]{opacity:0;transform:translate3d(-50%,-50%,0) scale(.5)}.mvi-msgbox-scale-leave-to[data-v-efa77df3]{opacity:0}.mvi-msgbox-scale-enter-active[data-v-efa77df3],.mvi-msgbox-scale-leave-active[data-v-efa77df3]{transition:transform .3s,opacity .3s}.mvi-msgbox-translate-enter-from[data-v-efa77df3]{opacity:0;transform:translate(-50%,-50%)!important}.mvi-msgbox-translate-enter-active[data-v-efa77df3]{transition:transform .3s,opacity .3s}.mvi-msgbox-translate-leave-to[data-v-efa77df3]{opacity:0}.mvi-msgbox-translate-leave-active[data-v-efa77df3]{transition:opacity .3s}.mvi-divider[data-v-401646bb]{display:flex;justify-content:space-between;align-items:center;color:var(--mvi-font-color-mute);-webkit-user-select:none;user-select:none}.mvi-divider .mvi-divider-left[data-v-401646bb]{flex:1;display:block;height:0px;border-top:1px solid var(--mvi-border-color)}.mvi-divider .mvi-divider-center[data-v-401646bb]{display:flex;justify-content:flex-start;align-items:center;margin:0 .2rem}.mvi-divider .mvi-divider-right[data-v-401646bb]{flex:1;display:block;height:0px;border-top:1px solid var(--mvi-border-color)}.mvi-divider.dashed>.mvi-divider-left[data-v-401646bb],.mvi-divider.dashed>.mvi-divider-right[data-v-401646bb]{border-top-style:dashed}.mvi-cell[data-v-bc4f5700]{display:block;width:100%;background-color:var(--mvi-bg-color-common);color:var(--mvi-font-color-default);padding:.2rem;position:relative}.mvi-cell.active[data-v-bc4f5700]:active:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:var(--mvi-bg-color-active);border:inherit;border-color:var(--mvi-bg-color-active);border-radius:inherit;transform:translate(-50%,-50%);opacity:.1;content:" ";box-sizing:content-box}.mvi-cell.border[data-v-bc4f5700]:after{display:block;position:absolute;left:.2rem;bottom:0;content:"";height:0;border-bottom:1px solid var(--mvi-border-color);width:calc(100% - .2rem);box-sizing:content-box}.mvi-cell .mvi-cell-item[data-v-bc4f5700]{display:flex;justify-content:flex-start;align-items:center;width:100%;padding:0;position:relative;overflow:hidden}.mvi-cell .mvi-cell-item .mvi-cell-icon[data-v-bc4f5700]{margin-right:.1rem}.mvi-cell .mvi-cell-item .mvi-cell-title[data-v-bc4f5700]{display:block;width:100%;font-size:.28rem;word-wrap:break-word}.mvi-cell .mvi-cell-item .mvi-cell-title.nowrap[data-v-bc4f5700]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mvi-cell .mvi-cell-item .mvi-cell-content[data-v-bc4f5700]{display:block;position:relative;width:100%;text-align:right;overflow:hidden;word-wrap:break-word;color:var(--mvi-font-color-sub)}.mvi-cell .mvi-cell-item .mvi-cell-content.nowrap[data-v-bc4f5700]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mvi-cell .mvi-cell-item .mvi-cell-title+.mvi-cell-content[data-v-bc4f5700]{margin-left:.2rem}.mvi-cell .mvi-cell-item .mvi-cell-arrow[data-v-bc4f5700]{margin-left:.1rem;color:var(--mvi-font-color-sub)}.mvi-cell .mvi-cell-label[data-v-bc4f5700]{width:100%;margin-top:.2rem;font-size:.24rem;color:var(--mvi-font-color-mute);word-wrap:break-word}.mvi-cell-group[data-v-1f8bf49d]{display:block;width:100%;margin-bottom:.3rem}.mvi-cell-group .mvi-cell-group-title[data-v-1f8bf49d]{padding:.3rem .2rem;color:var(--mvi-font-color-sub);font-size:.28rem}.mvi-cell-group.border[data-v-1f8bf49d] .mvi-cell.border:last-child:after{border:none}.mvi-checkbox[data-v-eacd1f4b]{display:inline-flex;margin:0;padding:0;position:relative;vertical-align:middle;justify-content:flex-start;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none}.mvi-checkbox input[type=checkbox][data-v-eacd1f4b]{width:0;height:0;opacity:0;border:none;display:none}.mvi-checkbox .mvi-checkbox-item[data-v-eacd1f4b]{display:inline-flex;justify-content:center;align-items:center;position:relative;margin:0;padding:.02rem;border:1px solid var(--mvi-border-color);background-color:var(--mvi-bg-color-common);font-size:.24rem;border-radius:.04rem;color:var(--mvi-bg-color-common);transition:border-color .1s cubic-bezier(.71,-.46,.29,1.46),background-color .1s cubic-bezier(.71,-.46,.29,1.46),color .1s cubic-bezier(.71,-.46,.29,1.46)}.mvi-checkbox .mvi-checkbox-item.check[data-v-eacd1f4b]{background-color:var(--mvi-info-normal);border-color:var(--mvi-info-normal);color:#fff}.mvi-checkbox .mvi-checkbox-item.round[data-v-eacd1f4b]{border-radius:50%}.mvi-checkbox .mvi-checkbox-label[data-v-eacd1f4b]{vertical-align:middle;font-size:.28rem;color:var(--mvi-font-color-default);-webkit-user-select:none;user-select:none}.mvi-checkbox .mvi-checkbox-label[data-placement=left][data-v-eacd1f4b]{margin-right:.1rem}.mvi-checkbox .mvi-checkbox-label[data-placement=right][data-v-eacd1f4b]{margin-left:.1rem}.mvi-checkbox[disabled] .mvi-checkbox-item[data-v-eacd1f4b],.mvi-checkbox[disabled] .mvi-checkbox-item.check[data-v-eacd1f4b]{background-color:var(--mvi-bg-color-dark);border-color:var(--mvi-border-color);color:var(--mvi-font-color-mute)}.mvi-checkbox[disabled] .mvi-checkbox-label[data-v-eacd1f4b]{color:var(--mvi-font-color-mute)}.mvi-radio[data-v-dd477585]{display:inline-flex;margin:0;padding:0;position:relative;vertical-align:middle;justify-content:flex-start;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none}.mvi-radio input[type=radio][data-v-dd477585]{width:0;height:0;opacity:0;border:none;display:none}.mvi-radio .mvi-radio-item[data-v-dd477585]{display:inline-flex;justify-content:center;align-items:center;position:relative;margin:0;padding:.02rem;border:1px solid var(--mvi-border-color);background-color:var(--mvi-bg-color-common);font-size:.24rem;border-radius:.04rem;color:var(--mvi-bg-color-common);transition:border-color .1s cubic-bezier(.71,-.46,.29,1.46),background-color .1s cubic-bezier(.71,-.46,.29,1.46),color .1s cubic-bezier(.71,-.46,.29,1.46)}.mvi-radio .mvi-radio-item.check[data-v-dd477585]{background-color:var(--mvi-info-normal);border-color:var(--mvi-info-normal);color:#fff}.mvi-radio .mvi-radio-item.round[data-v-dd477585]{border-radius:50%}.mvi-radio .mvi-radio-label[data-v-dd477585]{vertical-align:middle;font-size:.28rem;color:var(--mvi-font-color-default);-webkit-user-select:none;user-select:none}.mvi-radio .mvi-radio-label[data-placement=left][data-v-dd477585]{margin-right:.1rem}.mvi-radio .mvi-radio-label[data-placement=right][data-v-dd477585]{margin-left:.1rem}.mvi-radio[disabled] .mvi-radio-item[data-v-dd477585],.mvi-radio[disabled] .mvi-radio-item.check[data-v-dd477585]{background-color:var(--mvi-bg-color-dark);border-color:var(--mvi-border-color);color:var(--mvi-font-color-mute)}.mvi-radio[disabled] .mvi-radio-label[data-v-dd477585]{color:var(--mvi-font-color-mute)}.mvi-sign[data-v-e08c6951]{display:block;width:100%;height:100%;-webkit-user-select:none;user-select:none}.mvi-sign[data-v-e08c6951]:hover{cursor:pointer}.mvi-roll-container[data-v-ab6d09f6]{display:block;width:100%;position:relative;overflow:hidden;cursor:pointer}.mvi-roll-container .mvi-roll[data-v-ab6d09f6]{position:absolute;left:100%;top:100%;white-space:nowrap}.mvi-roll-container .mvi-roll.vertical[data-v-ab6d09f6]{left:0}.mvi-roll-container .mvi-roll.vertical.center[data-v-ab6d09f6]{left:50%;transform:translate(-50%)}.mvi-roll-container .mvi-roll.horizontal[data-v-ab6d09f6]{top:0}.mvi-row[data-v-cea991ed]{display:flex;width:100%;flex-wrap:wrap}.mvi-col-24[data-v-872a2bf7]{width:100%}.mvi-col-23[data-v-872a2bf7]{width:calc(100% / 24 * 23)}.mvi-col-22[data-v-872a2bf7]{width:calc(100% / 24 * 22)}.mvi-col-21[data-v-872a2bf7]{width:87.5%}.mvi-col-20[data-v-872a2bf7]{width:calc(100% / 24 * 20)}.mvi-col-19[data-v-872a2bf7]{width:calc(100% / 24 * 19)}.mvi-col-18[data-v-872a2bf7]{width:75%}.mvi-col-17[data-v-872a2bf7]{width:calc(100% / 24 * 17)}.mvi-col-16[data-v-872a2bf7]{width:calc(100% / 24 * 16)}.mvi-col-15[data-v-872a2bf7]{width:62.5%}.mvi-col-14[data-v-872a2bf7]{width:calc(100% / 24 * 14)}.mvi-col-13[data-v-872a2bf7]{width:calc(100% / 24 * 13)}.mvi-col-12[data-v-872a2bf7]{width:50%}.mvi-col-11[data-v-872a2bf7]{width:calc(100% / 24 * 11)}.mvi-col-10[data-v-872a2bf7]{width:calc(100% / 24 * 10)}.mvi-col-9[data-v-872a2bf7]{width:37.5%}.mvi-col-8[data-v-872a2bf7]{width:calc(100% / 24 * 8)}.mvi-col-7[data-v-872a2bf7]{width:calc(100% / 24 * 7)}.mvi-col-6[data-v-872a2bf7]{width:25%}.mvi-col-5[data-v-872a2bf7]{width:calc(100% / 24 * 5)}.mvi-col-4[data-v-872a2bf7]{width:calc(100% / 24 * 4)}.mvi-col-3[data-v-872a2bf7]{width:12.5%}.mvi-col-2[data-v-872a2bf7]{width:calc(100% / 24 * 2)}.mvi-col-1[data-v-872a2bf7]{width:calc(100% / 24 * 1)}.mvi-col-0[data-v-872a2bf7]{width:0%}.mvi-col-offset-24[data-v-872a2bf7]{margin-left:100%}.mvi-col-offset-23[data-v-872a2bf7]{margin-left:calc(100% / 24 * 23)}.mvi-col-offset-22[data-v-872a2bf7]{margin-left:calc(100% / 24 * 22)}.mvi-col-offset-21[data-v-872a2bf7]{margin-left:87.5%}.mvi-col-offset-20[data-v-872a2bf7]{margin-left:calc(100% / 24 * 20)}.mvi-col-offset-19[data-v-872a2bf7]{margin-left:calc(100% / 24 * 19)}.mvi-col-offset-18[data-v-872a2bf7]{margin-left:75%}.mvi-col-offset-17[data-v-872a2bf7]{margin-left:calc(100% / 24 * 17)}.mvi-col-offset-16[data-v-872a2bf7]{margin-left:calc(100% / 24 * 16)}.mvi-col-offset-15[data-v-872a2bf7]{margin-left:62.5%}.mvi-col-offset-14[data-v-872a2bf7]{margin-left:calc(100% / 24 * 14)}.mvi-col-offset-13[data-v-872a2bf7]{margin-left:calc(100% / 24 * 13)}.mvi-col-offset-12[data-v-872a2bf7]{margin-left:50%}.mvi-col-offset-11[data-v-872a2bf7]{margin-left:calc(100% / 24 * 11)}.mvi-col-offset-10[data-v-872a2bf7]{margin-left:calc(100% / 24 * 10)}.mvi-col-offset-9[data-v-872a2bf7]{margin-left:37.5%}.mvi-col-offset-8[data-v-872a2bf7]{margin-left:calc(100% / 24 * 8)}.mvi-col-offset-7[data-v-872a2bf7]{margin-left:calc(100% / 24 * 7)}.mvi-col-offset-6[data-v-872a2bf7]{margin-left:25%}.mvi-col-offset-5[data-v-872a2bf7]{margin-left:calc(100% / 24 * 5)}.mvi-col-offset-4[data-v-872a2bf7]{margin-left:calc(100% / 24 * 4)}.mvi-col-offset-3[data-v-872a2bf7]{margin-left:12.5%}.mvi-col-offset-2[data-v-872a2bf7]{margin-left:calc(100% / 24 * 2)}.mvi-col-offset-1[data-v-872a2bf7]{margin-left:calc(100% / 24 * 1)}.mvi-col-offset-0[data-v-872a2bf7]{margin-left:0%}.mvi-col-xs-24[data-v-872a2bf7]{width:100%}.mvi-col-xs-23[data-v-872a2bf7]{width:calc(100% / 24 * 23)}.mvi-col-xs-22[data-v-872a2bf7]{width:calc(100% / 24 * 22)}.mvi-col-xs-21[data-v-872a2bf7]{width:87.5%}.mvi-col-xs-20[data-v-872a2bf7]{width:calc(100% / 24 * 20)}.mvi-col-xs-19[data-v-872a2bf7]{width:calc(100% / 24 * 19)}.mvi-col-xs-18[data-v-872a2bf7]{width:75%}.mvi-col-xs-17[data-v-872a2bf7]{width:calc(100% / 24 * 17)}.mvi-col-xs-16[data-v-872a2bf7]{width:calc(100% / 24 * 16)}.mvi-col-xs-15[data-v-872a2bf7]{width:62.5%}.mvi-col-xs-14[data-v-872a2bf7]{width:calc(100% / 24 * 14)}.mvi-col-xs-13[data-v-872a2bf7]{width:calc(100% / 24 * 13)}.mvi-col-xs-12[data-v-872a2bf7]{width:50%}.mvi-col-xs-11[data-v-872a2bf7]{width:calc(100% / 24 * 11)}.mvi-col-xs-10[data-v-872a2bf7]{width:calc(100% / 24 * 10)}.mvi-col-xs-9[data-v-872a2bf7]{width:37.5%}.mvi-col-xs-8[data-v-872a2bf7]{width:calc(100% / 24 * 8)}.mvi-col-xs-7[data-v-872a2bf7]{width:calc(100% / 24 * 7)}.mvi-col-xs-6[data-v-872a2bf7]{width:25%}.mvi-col-xs-5[data-v-872a2bf7]{width:calc(100% / 24 * 5)}.mvi-col-xs-4[data-v-872a2bf7]{width:calc(100% / 24 * 4)}.mvi-col-xs-3[data-v-872a2bf7]{width:12.5%}.mvi-col-xs-2[data-v-872a2bf7]{width:calc(100% / 24 * 2)}.mvi-col-xs-1[data-v-872a2bf7]{width:calc(100% / 24 * 1)}.mvi-col-xs-0[data-v-872a2bf7]{width:0%}.mvi-col-offset-xs-24[data-v-872a2bf7]{margin-left:100%}.mvi-col-offset-xs-23[data-v-872a2bf7]{margin-left:calc(100% / 24 * 23)}.mvi-col-offset-xs-22[data-v-872a2bf7]{margin-left:calc(100% / 24 * 22)}.mvi-col-offset-xs-21[data-v-872a2bf7]{margin-left:87.5%}.mvi-col-offset-xs-20[data-v-872a2bf7]{margin-left:calc(100% / 24 * 20)}.mvi-col-offset-xs-19[data-v-872a2bf7]{margin-left:calc(100% / 24 * 19)}.mvi-col-offset-xs-18[data-v-872a2bf7]{margin-left:75%}.mvi-col-offset-xs-17[data-v-872a2bf7]{margin-left:calc(100% / 24 * 17)}.mvi-col-offset-xs-16[data-v-872a2bf7]{margin-left:calc(100% / 24 * 16)}.mvi-col-offset-xs-15[data-v-872a2bf7]{margin-left:62.5%}.mvi-col-offset-xs-14[data-v-872a2bf7]{margin-left:calc(100% / 24 * 14)}.mvi-col-offset-xs-13[data-v-872a2bf7]{margin-left:calc(100% / 24 * 13)}.mvi-col-offset-xs-12[data-v-872a2bf7]{margin-left:50%}.mvi-col-offset-xs-11[data-v-872a2bf7]{margin-left:calc(100% / 24 * 11)}.mvi-col-offset-xs-10[data-v-872a2bf7]{margin-left:calc(100% / 24 * 10)}.mvi-col-offset-xs-9[data-v-872a2bf7]{margin-left:37.5%}.mvi-col-offset-xs-8[data-v-872a2bf7]{margin-left:calc(100% / 24 * 8)}.mvi-col-offset-xs-7[data-v-872a2bf7]{margin-left:calc(100% / 24 * 7)}.mvi-col-offset-xs-6[data-v-872a2bf7]{margin-left:25%}.mvi-col-offset-xs-5[data-v-872a2bf7]{margin-left:calc(100% / 24 * 5)}.mvi-col-offset-xs-4[data-v-872a2bf7]{margin-left:calc(100% / 24 * 4)}.mvi-col-offset-xs-3[data-v-872a2bf7]{margin-left:12.5%}.mvi-col-offset-xs-2[data-v-872a2bf7]{margin-left:calc(100% / 24 * 2)}.mvi-col-offset-xs-1[data-v-872a2bf7]{margin-left:calc(100% / 24 * 1)}.mvi-col-offset-xs-0[data-v-872a2bf7]{margin-left:0%}@media only screen and (min-width: 640px){.mvi-col-sm-24[data-v-872a2bf7]{width:100%}.mvi-col-sm-23[data-v-872a2bf7]{width:calc(100% / 24 * 23)}.mvi-col-sm-22[data-v-872a2bf7]{width:calc(100% / 24 * 22)}.mvi-col-sm-21[data-v-872a2bf7]{width:87.5%}.mvi-col-sm-20[data-v-872a2bf7]{width:calc(100% / 24 * 20)}.mvi-col-sm-19[data-v-872a2bf7]{width:calc(100% / 24 * 19)}.mvi-col-sm-18[data-v-872a2bf7]{width:75%}.mvi-col-sm-17[data-v-872a2bf7]{width:calc(100% / 24 * 17)}.mvi-col-sm-16[data-v-872a2bf7]{width:calc(100% / 24 * 16)}.mvi-col-sm-15[data-v-872a2bf7]{width:62.5%}.mvi-col-sm-14[data-v-872a2bf7]{width:calc(100% / 24 * 14)}.mvi-col-sm-13[data-v-872a2bf7]{width:calc(100% / 24 * 13)}.mvi-col-sm-12[data-v-872a2bf7]{width:50%}.mvi-col-sm-11[data-v-872a2bf7]{width:calc(100% / 24 * 11)}.mvi-col-sm-10[data-v-872a2bf7]{width:calc(100% / 24 * 10)}.mvi-col-sm-9[data-v-872a2bf7]{width:37.5%}.mvi-col-sm-8[data-v-872a2bf7]{width:calc(100% / 24 * 8)}.mvi-col-sm-7[data-v-872a2bf7]{width:calc(100% / 24 * 7)}.mvi-col-sm-6[data-v-872a2bf7]{width:25%}.mvi-col-sm-5[data-v-872a2bf7]{width:calc(100% / 24 * 5)}.mvi-col-sm-4[data-v-872a2bf7]{width:calc(100% / 24 * 4)}.mvi-col-sm-3[data-v-872a2bf7]{width:12.5%}.mvi-col-sm-2[data-v-872a2bf7]{width:calc(100% / 24 * 2)}.mvi-col-sm-1[data-v-872a2bf7]{width:calc(100% / 24 * 1)}.mvi-col-sm-0[data-v-872a2bf7]{width:0%}.mvi-col-offset-sm-24[data-v-872a2bf7]{margin-left:100%}.mvi-col-offset-sm-23[data-v-872a2bf7]{margin-left:calc(100% / 24 * 23)}.mvi-col-offset-sm-22[data-v-872a2bf7]{margin-left:calc(100% / 24 * 22)}.mvi-col-offset-sm-21[data-v-872a2bf7]{margin-left:87.5%}.mvi-col-offset-sm-20[data-v-872a2bf7]{margin-left:calc(100% / 24 * 20)}.mvi-col-offset-sm-19[data-v-872a2bf7]{margin-left:calc(100% / 24 * 19)}.mvi-col-offset-sm-18[data-v-872a2bf7]{margin-left:75%}.mvi-col-offset-sm-17[data-v-872a2bf7]{margin-left:calc(100% / 24 * 17)}.mvi-col-offset-sm-16[data-v-872a2bf7]{margin-left:calc(100% / 24 * 16)}.mvi-col-offset-sm-15[data-v-872a2bf7]{margin-left:62.5%}.mvi-col-offset-sm-14[data-v-872a2bf7]{margin-left:calc(100% / 24 * 14)}.mvi-col-offset-sm-13[data-v-872a2bf7]{margin-left:calc(100% / 24 * 13)}.mvi-col-offset-sm-12[data-v-872a2bf7]{margin-left:50%}.mvi-col-offset-sm-11[data-v-872a2bf7]{margin-left:calc(100% / 24 * 11)}.mvi-col-offset-sm-10[data-v-872a2bf7]{margin-left:calc(100% / 24 * 10)}.mvi-col-offset-sm-9[data-v-872a2bf7]{margin-left:37.5%}.mvi-col-offset-sm-8[data-v-872a2bf7]{margin-left:calc(100% / 24 * 8)}.mvi-col-offset-sm-7[data-v-872a2bf7]{margin-left:calc(100% / 24 * 7)}.mvi-col-offset-sm-6[data-v-872a2bf7]{margin-left:25%}.mvi-col-offset-sm-5[data-v-872a2bf7]{margin-left:calc(100% / 24 * 5)}.mvi-col-offset-sm-4[data-v-872a2bf7]{margin-left:calc(100% / 24 * 4)}.mvi-col-offset-sm-3[data-v-872a2bf7]{margin-left:12.5%}.mvi-col-offset-sm-2[data-v-872a2bf7]{margin-left:calc(100% / 24 * 2)}.mvi-col-offset-sm-1[data-v-872a2bf7]{margin-left:calc(100% / 24 * 1)}.mvi-col-offset-sm-0[data-v-872a2bf7]{margin-left:0%}}@media only screen and (min-width: 992px){.mvi-col-md-24[data-v-872a2bf7]{width:100%}.mvi-col-md-23[data-v-872a2bf7]{width:calc(100% / 24 * 23)}.mvi-col-md-22[data-v-872a2bf7]{width:calc(100% / 24 * 22)}.mvi-col-md-21[data-v-872a2bf7]{width:87.5%}.mvi-col-md-20[data-v-872a2bf7]{width:calc(100% / 24 * 20)}.mvi-col-md-19[data-v-872a2bf7]{width:calc(100% / 24 * 19)}.mvi-col-md-18[data-v-872a2bf7]{width:75%}.mvi-col-md-17[data-v-872a2bf7]{width:calc(100% / 24 * 17)}.mvi-col-md-16[data-v-872a2bf7]{width:calc(100% / 24 * 16)}.mvi-col-md-15[data-v-872a2bf7]{width:62.5%}.mvi-col-md-14[data-v-872a2bf7]{width:calc(100% / 24 * 14)}.mvi-col-md-13[data-v-872a2bf7]{width:calc(100% / 24 * 13)}.mvi-col-md-12[data-v-872a2bf7]{width:50%}.mvi-col-md-11[data-v-872a2bf7]{width:calc(100% / 24 * 11)}.mvi-col-md-10[data-v-872a2bf7]{width:calc(100% / 24 * 10)}.mvi-col-md-9[data-v-872a2bf7]{width:37.5%}.mvi-col-md-8[data-v-872a2bf7]{width:calc(100% / 24 * 8)}.mvi-col-md-7[data-v-872a2bf7]{width:calc(100% / 24 * 7)}.mvi-col-md-6[data-v-872a2bf7]{width:25%}.mvi-col-md-5[data-v-872a2bf7]{width:calc(100% / 24 * 5)}.mvi-col-md-4[data-v-872a2bf7]{width:calc(100% / 24 * 4)}.mvi-col-md-3[data-v-872a2bf7]{width:12.5%}.mvi-col-md-2[data-v-872a2bf7]{width:calc(100% / 24 * 2)}.mvi-col-md-1[data-v-872a2bf7]{width:calc(100% / 24 * 1)}.mvi-col-md-0[data-v-872a2bf7]{width:0%}.mvi-col-offset-md-24[data-v-872a2bf7]{margin-left:100%}.mvi-col-offset-md-23[data-v-872a2bf7]{margin-left:calc(100% / 24 * 23)}.mvi-col-offset-md-22[data-v-872a2bf7]{margin-left:calc(100% / 24 * 22)}.mvi-col-offset-md-21[data-v-872a2bf7]{margin-left:87.5%}.mvi-col-offset-md-20[data-v-872a2bf7]{margin-left:calc(100% / 24 * 20)}.mvi-col-offset-md-19[data-v-872a2bf7]{margin-left:calc(100% / 24 * 19)}.mvi-col-offset-md-18[data-v-872a2bf7]{margin-left:75%}.mvi-col-offset-md-17[data-v-872a2bf7]{margin-left:calc(100% / 24 * 17)}.mvi-col-offset-md-16[data-v-872a2bf7]{margin-left:calc(100% / 24 * 16)}.mvi-col-offset-md-15[data-v-872a2bf7]{margin-left:62.5%}.mvi-col-offset-md-14[data-v-872a2bf7]{margin-left:calc(100% / 24 * 14)}.mvi-col-offset-md-13[data-v-872a2bf7]{margin-left:calc(100% / 24 * 13)}.mvi-col-offset-md-12[data-v-872a2bf7]{margin-left:50%}.mvi-col-offset-md-11[data-v-872a2bf7]{margin-left:calc(100% / 24 * 11)}.mvi-col-offset-md-10[data-v-872a2bf7]{margin-left:calc(100% / 24 * 10)}.mvi-col-offset-md-9[data-v-872a2bf7]{margin-left:37.5%}.mvi-col-offset-md-8[data-v-872a2bf7]{margin-left:calc(100% / 24 * 8)}.mvi-col-offset-md-7[data-v-872a2bf7]{margin-left:calc(100% / 24 * 7)}.mvi-col-offset-md-6[data-v-872a2bf7]{margin-left:25%}.mvi-col-offset-md-5[data-v-872a2bf7]{margin-left:calc(100% / 24 * 5)}.mvi-col-offset-md-4[data-v-872a2bf7]{margin-left:calc(100% / 24 * 4)}.mvi-col-offset-md-3[data-v-872a2bf7]{margin-left:12.5%}.mvi-col-offset-md-2[data-v-872a2bf7]{margin-left:calc(100% / 24 * 2)}.mvi-col-offset-md-1[data-v-872a2bf7]{margin-left:calc(100% / 24 * 1)}.mvi-col-offset-md-0[data-v-872a2bf7]{margin-left:0%}}@media only screen and (min-width: 1440px){.mvi-col-lg-24[data-v-872a2bf7]{width:100%}.mvi-col-lg-23[data-v-872a2bf7]{width:calc(100% / 24 * 23)}.mvi-col-lg-22[data-v-872a2bf7]{width:calc(100% / 24 * 22)}.mvi-col-lg-21[data-v-872a2bf7]{width:87.5%}.mvi-col-lg-20[data-v-872a2bf7]{width:calc(100% / 24 * 20)}.mvi-col-lg-19[data-v-872a2bf7]{width:calc(100% / 24 * 19)}.mvi-col-lg-18[data-v-872a2bf7]{width:75%}.mvi-col-lg-17[data-v-872a2bf7]{width:calc(100% / 24 * 17)}.mvi-col-lg-16[data-v-872a2bf7]{width:calc(100% / 24 * 16)}.mvi-col-lg-15[data-v-872a2bf7]{width:62.5%}.mvi-col-lg-14[data-v-872a2bf7]{width:calc(100% / 24 * 14)}.mvi-col-lg-13[data-v-872a2bf7]{width:calc(100% / 24 * 13)}.mvi-col-lg-12[data-v-872a2bf7]{width:50%}.mvi-col-lg-11[data-v-872a2bf7]{width:calc(100% / 24 * 11)}.mvi-col-lg-10[data-v-872a2bf7]{width:calc(100% / 24 * 10)}.mvi-col-lg-9[data-v-872a2bf7]{width:37.5%}.mvi-col-lg-8[data-v-872a2bf7]{width:calc(100% / 24 * 8)}.mvi-col-lg-7[data-v-872a2bf7]{width:calc(100% / 24 * 7)}.mvi-col-lg-6[data-v-872a2bf7]{width:25%}.mvi-col-lg-5[data-v-872a2bf7]{width:calc(100% / 24 * 5)}.mvi-col-lg-4[data-v-872a2bf7]{width:calc(100% / 24 * 4)}.mvi-col-lg-3[data-v-872a2bf7]{width:12.5%}.mvi-col-lg-2[data-v-872a2bf7]{width:calc(100% / 24 * 2)}.mvi-col-lg-1[data-v-872a2bf7]{width:calc(100% / 24 * 1)}.mvi-col-lg-0[data-v-872a2bf7]{width:0%}.mvi-col-offset-lg-24[data-v-872a2bf7]{margin-left:100%}.mvi-col-offset-lg-23[data-v-872a2bf7]{margin-left:calc(100% / 24 * 23)}.mvi-col-offset-lg-22[data-v-872a2bf7]{margin-left:calc(100% / 24 * 22)}.mvi-col-offset-lg-21[data-v-872a2bf7]{margin-left:87.5%}.mvi-col-offset-lg-20[data-v-872a2bf7]{margin-left:calc(100% / 24 * 20)}.mvi-col-offset-lg-19[data-v-872a2bf7]{margin-left:calc(100% / 24 * 19)}.mvi-col-offset-lg-18[data-v-872a2bf7]{margin-left:75%}.mvi-col-offset-lg-17[data-v-872a2bf7]{margin-left:calc(100% / 24 * 17)}.mvi-col-offset-lg-16[data-v-872a2bf7]{margin-left:calc(100% / 24 * 16)}.mvi-col-offset-lg-15[data-v-872a2bf7]{margin-left:62.5%}.mvi-col-offset-lg-14[data-v-872a2bf7]{margin-left:calc(100% / 24 * 14)}.mvi-col-offset-lg-13[data-v-872a2bf7]{margin-left:calc(100% / 24 * 13)}.mvi-col-offset-lg-12[data-v-872a2bf7]{margin-left:50%}.mvi-col-offset-lg-11[data-v-872a2bf7]{margin-left:calc(100% / 24 * 11)}.mvi-col-offset-lg-10[data-v-872a2bf7]{margin-left:calc(100% / 24 * 10)}.mvi-col-offset-lg-9[data-v-872a2bf7]{margin-left:37.5%}.mvi-col-offset-lg-8[data-v-872a2bf7]{margin-left:calc(100% / 24 * 8)}.mvi-col-offset-lg-7[data-v-872a2bf7]{margin-left:calc(100% / 24 * 7)}.mvi-col-offset-lg-6[data-v-872a2bf7]{margin-left:25%}.mvi-col-offset-lg-5[data-v-872a2bf7]{margin-left:calc(100% / 24 * 5)}.mvi-col-offset-lg-4[data-v-872a2bf7]{margin-left:calc(100% / 24 * 4)}.mvi-col-offset-lg-3[data-v-872a2bf7]{margin-left:12.5%}.mvi-col-offset-lg-2[data-v-872a2bf7]{margin-left:calc(100% / 24 * 2)}.mvi-col-offset-lg-1[data-v-872a2bf7]{margin-left:calc(100% / 24 * 1)}.mvi-col-offset-lg-0[data-v-872a2bf7]{margin-left:0%}}@media only screen and (min-width: 1920px){.mvi-col-xl-24[data-v-872a2bf7]{width:100%}.mvi-col-xl-23[data-v-872a2bf7]{width:calc(100% / 24 * 23)}.mvi-col-xl-22[data-v-872a2bf7]{width:calc(100% / 24 * 22)}.mvi-col-xl-21[data-v-872a2bf7]{width:87.5%}.mvi-col-xl-20[data-v-872a2bf7]{width:calc(100% / 24 * 20)}.mvi-col-xl-19[data-v-872a2bf7]{width:calc(100% / 24 * 19)}.mvi-col-xl-18[data-v-872a2bf7]{width:75%}.mvi-col-xl-17[data-v-872a2bf7]{width:calc(100% / 24 * 17)}.mvi-col-xl-16[data-v-872a2bf7]{width:calc(100% / 24 * 16)}.mvi-col-xl-15[data-v-872a2bf7]{width:62.5%}.mvi-col-xl-14[data-v-872a2bf7]{width:calc(100% / 24 * 14)}.mvi-col-xl-13[data-v-872a2bf7]{width:calc(100% / 24 * 13)}.mvi-col-xl-12[data-v-872a2bf7]{width:50%}.mvi-col-xl-11[data-v-872a2bf7]{width:calc(100% / 24 * 11)}.mvi-col-xl-10[data-v-872a2bf7]{width:calc(100% / 24 * 10)}.mvi-col-xl-9[data-v-872a2bf7]{width:37.5%}.mvi-col-xl-8[data-v-872a2bf7]{width:calc(100% / 24 * 8)}.mvi-col-xl-7[data-v-872a2bf7]{width:calc(100% / 24 * 7)}.mvi-col-xl-6[data-v-872a2bf7]{width:25%}.mvi-col-xl-5[data-v-872a2bf7]{width:calc(100% / 24 * 5)}.mvi-col-xl-4[data-v-872a2bf7]{width:calc(100% / 24 * 4)}.mvi-col-xl-3[data-v-872a2bf7]{width:12.5%}.mvi-col-xl-2[data-v-872a2bf7]{width:calc(100% / 24 * 2)}.mvi-col-xl-1[data-v-872a2bf7]{width:calc(100% / 24 * 1)}.mvi-col-xl-0[data-v-872a2bf7]{width:0%}.mvi-col-offset-xl-24[data-v-872a2bf7]{margin-left:100%}.mvi-col-offset-xl-23[data-v-872a2bf7]{margin-left:calc(100% / 24 * 23)}.mvi-col-offset-xl-22[data-v-872a2bf7]{margin-left:calc(100% / 24 * 22)}.mvi-col-offset-xl-21[data-v-872a2bf7]{margin-left:87.5%}.mvi-col-offset-xl-20[data-v-872a2bf7]{margin-left:calc(100% / 24 * 20)}.mvi-col-offset-xl-19[data-v-872a2bf7]{margin-left:calc(100% / 24 * 19)}.mvi-col-offset-xl-18[data-v-872a2bf7]{margin-left:75%}.mvi-col-offset-xl-17[data-v-872a2bf7]{margin-left:calc(100% / 24 * 17)}.mvi-col-offset-xl-16[data-v-872a2bf7]{margin-left:calc(100% / 24 * 16)}.mvi-col-offset-xl-15[data-v-872a2bf7]{margin-left:62.5%}.mvi-col-offset-xl-14[data-v-872a2bf7]{margin-left:calc(100% / 24 * 14)}.mvi-col-offset-xl-13[data-v-872a2bf7]{margin-left:calc(100% / 24 * 13)}.mvi-col-offset-xl-12[data-v-872a2bf7]{margin-left:50%}.mvi-col-offset-xl-11[data-v-872a2bf7]{margin-left:calc(100% / 24 * 11)}.mvi-col-offset-xl-10[data-v-872a2bf7]{margin-left:calc(100% / 24 * 10)}.mvi-col-offset-xl-9[data-v-872a2bf7]{margin-left:37.5%}.mvi-col-offset-xl-8[data-v-872a2bf7]{margin-left:calc(100% / 24 * 8)}.mvi-col-offset-xl-7[data-v-872a2bf7]{margin-left:calc(100% / 24 * 7)}.mvi-col-offset-xl-6[data-v-872a2bf7]{margin-left:25%}.mvi-col-offset-xl-5[data-v-872a2bf7]{margin-left:calc(100% / 24 * 5)}.mvi-col-offset-xl-4[data-v-872a2bf7]{margin-left:calc(100% / 24 * 4)}.mvi-col-offset-xl-3[data-v-872a2bf7]{margin-left:12.5%}.mvi-col-offset-xl-2[data-v-872a2bf7]{margin-left:calc(100% / 24 * 2)}.mvi-col-offset-xl-1[data-v-872a2bf7]{margin-left:calc(100% / 24 * 1)}.mvi-col-offset-xl-0[data-v-872a2bf7]{margin-left:0%}}.mvi-autocomplete[data-v-117fab4d]{display:flex;justify-content:flex-start;align-items:center;width:100%;border-radius:.08rem;color:var(--mvi-font-color-default);position:relative;background-color:var(--mvi-bg-color-common);border:1px solid var(--mvi-border-color);transition:border-color .6s,box-shadow .6s;box-shadow:none}.mvi-autocomplete input[data-v-117fab4d]{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:block;width:100%;height:100%;flex:1;margin:0;padding:0;border:none;border-radius:inherit;background-color:inherit;color:inherit;font-size:inherit}.mvi-autocomplete input[data-v-117fab4d]::-webkit-input-placeholder,.mvi-autocomplete input[data-v-117fab4d]::placeholder{color:inherit;font-family:inherit;font-size:inherit;opacity:.5;vertical-align:middle}.mvi-autocomplete input.left-none-radius[data-v-117fab4d]{border-top-left-radius:0;border-bottom-left-radius:0}.mvi-autocomplete input.right-none-radius[data-v-117fab4d]{border-top-right-radius:0;border-bottom-right-radius:0}.mvi-autocomplete input[disabled][data-v-117fab4d]{background-color:inherit;color:inherit}.mvi-autocomplete .mvi-autocomplete-left-icon[data-v-117fab4d],.mvi-autocomplete .mvi-autocomplete-right-icon[data-v-117fab4d],.mvi-autocomplete .mvi-autocomplete-clear[data-v-117fab4d]{display:flex;justify-content:center;align-items:center;height:100%;border-radius:0}.mvi-autocomplete .mvi-autocomplete-left-icon[data-v-117fab4d]:hover,.mvi-autocomplete .mvi-autocomplete-right-icon[data-v-117fab4d]:hover,.mvi-autocomplete .mvi-autocomplete-clear[data-v-117fab4d]:hover{cursor:pointer}.mvi-autocomplete .mvi-autocomplete-clear[data-v-117fab4d]{opacity:.6}.mvi-autocomplete .mvi-autocomplete-left-icon[data-v-117fab4d]{border-top-left-radius:inherit;border-bottom-left-radius:inherit}.mvi-autocomplete .mvi-autocomplete-right-icon[data-v-117fab4d],.mvi-autocomplete .mvi-autocomplete-clear[data-v-117fab4d]{border-top-right-radius:inherit;border-bottom-right-radius:inherit}.mvi-autocomplete.info[data-v-117fab4d]{border-color:var(--mvi-info-normal);box-shadow:0 0 .16rem var(--mvi-info-shadow)}.mvi-autocomplete.success[data-v-117fab4d]{border-color:var(--mvi-success-normal);box-shadow:0 0 .16rem var(--mvi-success-shadow)}.mvi-autocomplete.primary[data-v-117fab4d]{border-color:var(--mvi-primary-normal);box-shadow:0 0 .16rem var(--mvi-primary-shadow)}.mvi-autocomplete.warn[data-v-117fab4d]{border-color:var(--mvi-warn-normal);box-shadow:0 0 .16rem var(--mvi-warn-shadow)}.mvi-autocomplete.error[data-v-117fab4d]{border-color:var(--mvi-error-normal);box-shadow:0 0 .16rem var(--mvi-error-shadow)}.mvi-autocomplete.round[data-v-117fab4d]{border-radius:999rem}.mvi-autocomplete.square[data-v-117fab4d]{border-radius:0}.mvi-autocomplete.small[data-v-117fab4d]{font-size:.28rem;height:.72rem}.mvi-autocomplete.small .mvi-autocomplete-left-icon[data-v-117fab4d],.mvi-autocomplete.small .mvi-autocomplete-right-icon[data-v-117fab4d],.mvi-autocomplete.small .mvi-autocomplete-clear[data-v-117fab4d],.mvi-autocomplete.small input[data-v-117fab4d]{padding:0 .2rem}.mvi-autocomplete.medium[data-v-117fab4d]{font-size:.32rem;height:.88rem}.mvi-autocomplete.medium .mvi-autocomplete-left-icon[data-v-117fab4d],.mvi-autocomplete.medium .mvi-autocomplete-right-icon[data-v-117fab4d],.mvi-autocomplete.medium .mvi-autocomplete-clear[data-v-117fab4d],.mvi-autocomplete.medium input[data-v-117fab4d]{padding:0 .3rem}.mvi-autocomplete.large[data-v-117fab4d]{font-size:.36rem;height:1rem}.mvi-autocomplete.large .mvi-autocomplete-left-icon[data-v-117fab4d],.mvi-autocomplete.large .mvi-autocomplete-right-icon[data-v-117fab4d],.mvi-autocomplete.large .mvi-autocomplete-clear[data-v-117fab4d],.mvi-autocomplete.large input[data-v-117fab4d]{padding:0 .4rem}.mvi-autocomplete[disabled][data-v-117fab4d]{opacity:.6}.mvi-autocomplete-menu[data-v-117fab4d]{display:block;padding:.1rem 0;overflow:auto;overflow-x:hidden;width:100%}.mvi-autocomplete-menu .mvi-autocomplete-list[data-v-117fab4d]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1}.mvi-autocomplete-menu .mvi-autocomplete-list[data-v-117fab4d]:hover{cursor:pointer;background-color:var(--mvi-bg-color-default)}.mvi-autocomplete-menu.small .mvi-autocomplete-list[data-v-117fab4d]{font-size:.28rem;padding:.2rem}.mvi-autocomplete-menu.medium .mvi-autocomplete-list[data-v-117fab4d]{font-size:.32rem;padding:.3rem}.mvi-autocomplete-menu.large .mvi-autocomplete-list[data-v-117fab4d]{font-size:.36rem;padding:.4rem}.mvi-overlay[data-v-d1b1c2d0]{display:block;background-color:var(--mvi-overlay);overflow:hidden;position:absolute;top:0;left:0;width:100%;height:100%;border-radius:inherit}.mvi-overlay-fade-enter-from[data-v-d1b1c2d0],.mvi-overlay-fade-leave-to[data-v-d1b1c2d0]{opacity:0}.mvi-overlay-fade-enter-to[data-v-d1b1c2d0],.mvi-overlay-fade-leave-from[data-v-d1b1c2d0]{opacity:1}.mvi-popup[data-v-aa746d7c]{display:block;position:absolute;background-color:var(--mvi-bg-color-common);transition-timing-function:linear;overflow:hidden;color:var(--mvi-font-color-default);font-size:.28rem}.mvi-popup.padding-top[data-v-aa746d7c]{padding:.72rem 0 0}.mvi-popup.padding-bottom[data-v-aa746d7c]{padding:0 0 .72rem}.mvi-popup.left[data-v-aa746d7c]{left:0;right:auto;top:0;bottom:auto;height:100%;max-width:100%}.mvi-popup.left.round[data-v-aa746d7c]{border-top-right-radius:.4rem;border-bottom-right-radius:.4rem}.mvi-popup.right[data-v-aa746d7c]{left:auto;right:0;top:0;bottom:auto;height:100%;max-width:100%}.mvi-popup.right.round[data-v-aa746d7c]{border-top-left-radius:.4rem;border-bottom-left-radius:.4rem}.mvi-popup.top[data-v-aa746d7c]{left:0;right:auto;top:0;bottom:auto;width:100%;max-height:100%}.mvi-popup.top.round[data-v-aa746d7c]{border-bottom-left-radius:.4rem;border-bottom-right-radius:.4rem}.mvi-popup.bottom[data-v-aa746d7c]{left:0;right:auto;top:auto;bottom:0;width:100%;max-height:100%}.mvi-popup.bottom.round[data-v-aa746d7c]{border-top-left-radius:.4rem;border-top-right-radius:.4rem}.mvi-popup .mvi-popup-times[data-v-aa746d7c]{display:flex;justify-content:center;align-items:center;position:absolute;height:.72rem;padding:0 .2rem;cursor:pointer;font-size:.28rem;color:var(--mvi-font-color-mute);line-height:1;opacity:.8;transition:opacity .3s}.mvi-popup .mvi-popup-times[data-v-aa746d7c]:hover{opacity:1}.mvi-popup .mvi-popup-times.top-left[data-v-aa746d7c]{left:0;top:0}.mvi-popup .mvi-popup-times.top-right[data-v-aa746d7c]{right:0;top:0}.mvi-popup .mvi-popup-times.bottom-left[data-v-aa746d7c]{left:0;bottom:0}.mvi-popup .mvi-popup-times.bottom-right[data-v-aa746d7c]{right:0;bottom:0}.mvi-popup .mvi-popup-content[data-v-aa746d7c]{width:100%;height:100%;overflow:auto;padding:0}.mvi-slide-left-enter-from[data-v-aa746d7c],.mvi-slide-left-leave-to[data-v-aa746d7c]{transform:translate(-100%)}.mvi-slide-right-enter-from[data-v-aa746d7c],.mvi-slide-right-leave-to[data-v-aa746d7c]{transform:translate(100%)}.mvi-slide-top-enter-from[data-v-aa746d7c],.mvi-slide-top-leave-to[data-v-aa746d7c]{transform:translateY(-100%)}.mvi-slide-bottom-enter-from[data-v-aa746d7c],.mvi-slide-bottom-leave-to[data-v-aa746d7c]{transform:translateY(100%)}.mvi-dropdown[data-v-1078d964]{display:block;width:100%;position:relative}.mvi-dropdown .mvi-dropdown-item[data-v-1078d964]{display:flex;justify-content:flex-start;align-items:center;position:relative;width:100%;height:.88rem;border-bottom:1px solid var(--mvi-border-color);padding:0 .2rem;font-size:.28rem;color:var(--mvi-font-color-default);cursor:pointer;-webkit-user-select:none;user-select:none}.mvi-dropdown .mvi-dropdown-item.active[data-v-1078d964]:active:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:var(--mvi-bg-color-active);border:inherit;border-color:var(--mvi-bg-color-active);border-radius:inherit;transform:translate(-50%,-50%);opacity:.1;content:" ";box-sizing:content-box}.mvi-dropdown .mvi-dropdown-item.checked[data-v-1078d964]{color:var(--mvi-info-normal)}.mvi-dropdown .mvi-dropdown-item[disabled][data-v-1078d964]{color:var(--mvi-font-color-mute)}.mvi-dropdown .mvi-dropdown-item[data-v-1078d964]:last-child{border-bottom:none}.mvi-dropdown .mvi-dropdown-item .mvi-dropdown-label[data-v-1078d964]{display:flex;justify-content:flex-start;align-items:center;height:100%;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;transition:color .2s}.mvi-dropdown .mvi-dropdown-item .mvi-dropdown-label .mvi-dropdown-label-icon[data-v-1078d964]{margin-right:.1rem}.mvi-dropdown .mvi-dropdown-item .mvi-dropdown-label .mvi-dropdown-label-text[data-v-1078d964]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mvi-dropdown .mvi-dropdown-item .mvi-dropdown-icon[data-v-1078d964]{display:flex;justify-content:center;align-items:center;padding-left:.2rem;height:100%;opacity:0;transition:opacity .2s,color .2s}.mvi-dropdown .mvi-dropdown-item .mvi-dropdown-icon[data-placement=left][data-v-1078d964],.mvi-dropdown .mvi-dropdown-item .mvi-dropdown-icon[data-placement=right][data-v-1078d964]{margin-left:2rem}.mvi-dropdown .mvi-dropdown-item .mvi-dropdown-icon.checked[data-v-1078d964]{opacity:1}.mvi-tooltip[data-v-c0ce1b3c]{display:inline-block;position:relative}.mvi-tooltip.block[data-v-c0ce1b3c]{display:block}.mvi-tooltip-content[data-v-c0ce1b3c]{position:relative;display:block;padding:.1rem .2rem;font-size:.24rem;margin:0;white-space:nowrap;line-height:1.5;text-align:center}.mvi-tooltip-enter-from,.mvi-tooltip-leave-to{opacity:0}.mvi-transition-slide[data-v-5dd3ed5b]{display:block;width:100%;overflow:hidden;padding:0;margin:0;border:none;background:none}.mvi-switch[data-v-8c04bc8f]{display:inline-flex;justify-content:flex-start;align-items:center;position:relative;background-color:var(--mvi-bg-color-common);border-radius:999rem;border:1px solid var(--mvi-border-light-color);transition:background-color .3s;cursor:pointer;vertical-align:middle}.mvi-switch input[type=checkbox][data-v-8c04bc8f]{display:none;width:0;height:0;opacity:0}.mvi-switch input[type=checkbox][disabled][data-v-8c04bc8f]{pointer-events:none}.mvi-switch[disabled][data-v-8c04bc8f]{opacity:.6}.mvi-switch.checked[data-v-8c04bc8f]{background-color:var(--mvi-info-normal)}.mvi-switch .mvi-switch-el[data-v-8c04bc8f]{display:inline-flex;justify-content:center;align-items:center;color:var(--mvi-info-normal);width:.4rem;height:.4rem;border-radius:50%;box-shadow:var(--mvi-boxshadow);background-color:#fff;margin:0;padding:0;transition:transform .3s cubic-bezier(.3,1.05,.4,1.05)}.mvi-switch .mvi-switch-el.checked[data-v-8c04bc8f]{transform:translate(100%)}.mvi-navbar[data-v-b0585dce]{display:flex;justify-content:center;align-items:center;width:100%;height:.88rem;background-color:var(--mvi-bg-color-common);padding:0 .2rem;position:relative;color:var(--mvi-font-color-default);font-size:.32rem}.mvi-navbar.border[data-v-b0585dce]{border-bottom:1px solid var(--mvi-border-color)}.mvi-navbar.fixed[data-v-b0585dce]{position:fixed;top:0;left:0}.mvi-navbar .mvi-navbar-left[data-v-b0585dce]{display:flex;justify-content:flex-start;align-items:center;position:absolute;left:0;top:0;height:100%;padding-left:.2rem;vertical-align:middle;cursor:pointer;-webkit-user-select:none;user-select:none}.mvi-navbar .mvi-navbar-left .mvi-navbar-left-icon[data-v-b0585dce]{margin-right:.1rem}.mvi-navbar .mvi-navbar-left .mvi-navbar-left-text[data-v-b0585dce]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mvi-navbar .mvi-navbar-center[data-v-b0585dce]{display:flex;align-items:center;height:100%}.mvi-navbar .mvi-navbar-center .mvi-navbar-title[data-v-b0585dce]{display:block;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.mvi-navbar .mvi-navbar-right[data-v-b0585dce]{display:flex;justify-content:flex-end;align-items:center;position:absolute;right:0;top:0;height:100%;padding-right:.2rem;vertical-align:middle;cursor:pointer;-webkit-user-select:none;user-select:none}.mvi-navbar .mvi-navbar-right .mvi-navbar-right-icon[data-v-b0585dce]{margin-left:.1rem}.mvi-navbar .mvi-navbar-right .mvi-navbar-right-text[data-v-b0585dce]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mvi-notify[data-v-54119060]{display:flex;justify-content:center;align-items:center;width:100%;height:.72rem;position:fixed;top:0;left:0;margin:0;padding:0 .2rem}.mvi-notify.success[data-v-54119060]{background-color:var(--mvi-success-normal);color:#fff}.mvi-notify.info[data-v-54119060]{background-color:var(--mvi-info-normal);color:#fff}.mvi-notify.primary[data-v-54119060]{background-color:var(--mvi-primary-normal);color:#fff}.mvi-notify.error[data-v-54119060]{background-color:var(--mvi-error-normal);color:#fff}.mvi-notify.warn[data-v-54119060]{background-color:var(--mvi-warn-normal);color:#fff}.mvi-notify .mvi-notify-content[data-v-54119060]{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mvi-notify .mvi-notify-content>.mvi-icon[data-v-54119060]{margin-right:.2rem}.mvi-notify .mvi-notify-content>span[data-v-54119060]{vertical-align:middle}.mvi-notify-enter-active[data-v-54119060],.mvi-notify-leave-active[data-v-54119060]{transition:all .3s}.mvi-notify-enter-from[data-v-54119060],.mvi-notify-leave-to[data-v-54119060]{opacity:0;transform:translateY(-100%)}.mvi-actionsheet[data-v-4d6a59fe]{display:block;width:100%;position:relative}.mvi-actionsheet .mvi-actionsheet-title[data-v-4d6a59fe]{display:flex;justify-content:center;align-items:center;height:.88rem;border-bottom:1px solid var(--mvi-border-color);color:var(--mvi-font-color-sub);padding:0 .3rem;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.mvi-actionsheet .mvi-actionsheet-title.medium[data-v-4d6a59fe]{font-size:.24rem}.mvi-actionsheet .mvi-actionsheet-title.large[data-v-4d6a59fe]{font-size:.28rem}.mvi-actionsheet .mvi-actionsheet-list[data-v-4d6a59fe]{display:block;width:100%}.mvi-actionsheet .mvi-actionsheet-list .mvi-actionsheet-item[data-v-4d6a59fe]{display:flex;position:relative;justify-content:center;align-items:center;border-bottom:1px solid var(--mvi-border-color);color:var(--mvi-font-color-default);padding:0 .3rem;cursor:pointer}.mvi-actionsheet .mvi-actionsheet-list .mvi-actionsheet-item.medium[data-v-4d6a59fe]{height:.88rem;font-size:.28rem}.mvi-actionsheet .mvi-actionsheet-list .mvi-actionsheet-item.large[data-v-4d6a59fe]{height:1rem;font-size:.32rem}.mvi-actionsheet .mvi-actionsheet-list .mvi-actionsheet-item.active[data-v-4d6a59fe]:active:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:var(--mvi-bg-color-active);border:inherit;border-color:var(--mvi-bg-color-active);border-radius:inherit;transform:translate(-50%,-50%);opacity:.1;content:" ";box-sizing:content-box}.mvi-actionsheet .mvi-actionsheet-list .mvi-actionsheet-item[disabled][data-v-4d6a59fe]{color:var(--mvi-font-color-mute)}.mvi-actionsheet .mvi-actionsheet-list .mvi-actionsheet-item[data-v-4d6a59fe]:last-child{border-bottom:none}.mvi-actionsheet .mvi-actionsheet-list .mvi-actionsheet-item .mvi-actionsheet-content[data-v-4d6a59fe]{display:flex;justify-content:center;align-items:center;width:100%}.mvi-actionsheet .mvi-actionsheet-list .mvi-actionsheet-item .mvi-actionsheet-content .mvi-icon[data-v-4d6a59fe]{font-size:inherit;margin-right:.1rem;margin-left:0}.mvi-actionsheet .mvi-actionsheet-list .mvi-actionsheet-item .mvi-actionsheet-content .mvi-icon[data-placement=right][data-v-4d6a59fe]{margin-left:.1rem;margin-right:0}.mvi-actionsheet .mvi-actionsheet-list .mvi-actionsheet-item .mvi-actionsheet-item-label[data-v-4d6a59fe]{display:inline-block;max-width:80%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mvi-actionsheet .mvi-actionsheet-divider[data-v-4d6a59fe]{display:block;width:100%;height:.3rem;background-color:var(--mvi-bg-color-default)}.mvi-actionsheet .mvi-actionsheet-button[data-v-4d6a59fe]{display:flex;justify-content:center;align-items:center;position:relative;color:var(--mvi-font-color-default)}.mvi-actionsheet .mvi-actionsheet-button.medium[data-v-4d6a59fe]{font-size:.32rem;height:.88rem}.mvi-actionsheet .mvi-actionsheet-button.large[data-v-4d6a59fe]{font-size:.36rem;height:1rem}.mvi-actionsheet .mvi-actionsheet-button.active[data-v-4d6a59fe]:active:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:var(--mvi-bg-color-active);border:inherit;border-color:var(--mvi-bg-color-active);border-radius:inherit;transform:translate(-50%,-50%);opacity:.1;content:" ";box-sizing:content-box}.mvi-calendar[data-v-6fadcb4d]{display:block;width:100%;padding:.1rem;background-color:var(--mvi-bg-color-common);border-radius:.08rem;color:var(--mvi-font-color-default)}.mvi-calendar .mvi-calendar-years[data-v-6fadcb4d]{display:flex;width:100%;justify-content:space-between;align-items:center}.mvi-calendar .mvi-calendar-years .mvi-calendar-year[data-v-6fadcb4d]{width:25%;display:block;text-align:center;padding:.1rem;-webkit-user-select:none;user-select:none}.mvi-calendar .mvi-calendar-years .mvi-calendar-year .mvi-calendar-year-item[data-v-6fadcb4d]{display:inline-block;position:relative;padding:.1rem .2rem;font-size:.28rem;border-radius:.04rem;cursor:pointer}.mvi-calendar .mvi-calendar-years .mvi-calendar-year .mvi-calendar-year-item[disabled][data-v-6fadcb4d]{opacity:.6}.mvi-calendar .mvi-calendar-years .mvi-calendar-year .mvi-calendar-year-item.active[data-v-6fadcb4d]:active:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:var(--mvi-bg-color-active);border:inherit;border-color:var(--mvi-bg-color-active);border-radius:inherit;transform:translate(-50%,-50%);opacity:.1;content:" ";box-sizing:content-box}.mvi-calendar .mvi-calendar-years .mvi-calendar-year .mvi-calendar-year-item.now.info[data-v-6fadcb4d]{color:var(--mvi-info-normal)}.mvi-calendar .mvi-calendar-years .mvi-calendar-year .mvi-calendar-year-item.now.success[data-v-6fadcb4d]{color:var(--mvi-success-normal)}.mvi-calendar .mvi-calendar-years .mvi-calendar-year .mvi-calendar-year-item.now.primary[data-v-6fadcb4d]{color:var(--mvi-primary-normal)}.mvi-calendar .mvi-calendar-years .mvi-calendar-year .mvi-calendar-year-item.now.warn[data-v-6fadcb4d]{color:var(--mvi-warn-normal)}.mvi-calendar .mvi-calendar-years .mvi-calendar-year .mvi-calendar-year-item.now.error[data-v-6fadcb4d]{color:var(--mvi-error-normal)}.mvi-calendar .mvi-calendar-years .mvi-calendar-year .mvi-calendar-year-item.current[data-v-6fadcb4d]{font-weight:700}.mvi-calendar .mvi-calendar-years .mvi-calendar-year .mvi-calendar-year-item.current.info[data-v-6fadcb4d]{background-color:var(--mvi-light-info);color:var(--mvi-info-normal)}.mvi-calendar .mvi-calendar-years .mvi-calendar-year .mvi-calendar-year-item.current.success[data-v-6fadcb4d]{background-color:var(--mvi-light-success);color:var(--mvi-success-normal)}.mvi-calendar .mvi-calendar-years .mvi-calendar-year .mvi-calendar-year-item.current.primary[data-v-6fadcb4d]{background-color:var(--mvi-light-primary);color:#fff}.mvi-calendar .mvi-calendar-years .mvi-calendar-year .mvi-calendar-year-item.current.warn[data-v-6fadcb4d]{background-color:var(--mvi-light-warn);color:var(--mvi-warn-normal)}.mvi-calendar .mvi-calendar-years .mvi-calendar-year .mvi-calendar-year-item.current.error[data-v-6fadcb4d]{background-color:var(--mvi-light-error);color:var(--mvi-error-normal)}.mvi-calendar .mvi-calendar-months[data-v-6fadcb4d]{display:flex;width:100%;justify-content:space-between;align-items:center}.mvi-calendar .mvi-calendar-months .mvi-calendar-month[data-v-6fadcb4d]{width:25%;display:block;text-align:center;padding:.1rem;-webkit-user-select:none;user-select:none}.mvi-calendar .mvi-calendar-months .mvi-calendar-month .mvi-calendar-month-item[data-v-6fadcb4d]{display:inline-block;position:relative;padding:.1rem .2rem;font-size:.28rem;border-radius:.04rem;cursor:pointer}.mvi-calendar .mvi-calendar-months .mvi-calendar-month .mvi-calendar-month-item[disabled][data-v-6fadcb4d]{opacity:.6}.mvi-calendar .mvi-calendar-months .mvi-calendar-month .mvi-calendar-month-item.active[data-v-6fadcb4d]:active:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:var(--mvi-bg-color-active);border:inherit;border-color:var(--mvi-bg-color-active);border-radius:inherit;transform:translate(-50%,-50%);opacity:.1;content:" ";box-sizing:content-box}.mvi-calendar .mvi-calendar-months .mvi-calendar-month .mvi-calendar-month-item.now.info[data-v-6fadcb4d]{color:var(--mvi-info-normal)}.mvi-calendar .mvi-calendar-months .mvi-calendar-month .mvi-calendar-month-item.now.success[data-v-6fadcb4d]{color:var(--mvi-success-normal)}.mvi-calendar .mvi-calendar-months .mvi-calendar-month .mvi-calendar-month-item.now.primary[data-v-6fadcb4d]{color:var(--mvi-primary-normal)}.mvi-calendar .mvi-calendar-months .mvi-calendar-month .mvi-calendar-month-item.now.warn[data-v-6fadcb4d]{color:var(--mvi-warn-normal)}.mvi-calendar .mvi-calendar-months .mvi-calendar-month .mvi-calendar-month-item.now.error[data-v-6fadcb4d]{color:var(--mvi-error-normal)}.mvi-calendar .mvi-calendar-months .mvi-calendar-month .mvi-calendar-month-item.current[data-v-6fadcb4d]{font-weight:700}.mvi-calendar .mvi-calendar-months .mvi-calendar-month .mvi-calendar-month-item.current.info[data-v-6fadcb4d]{background-color:var(--mvi-light-info);color:var(--mvi-info-normal)}.mvi-calendar .mvi-calendar-months .mvi-calendar-month .mvi-calendar-month-item.current.success[data-v-6fadcb4d]{background-color:var(--mvi-light-success);color:var(--mvi-success-normal)}.mvi-calendar .mvi-calendar-months .mvi-calendar-month .mvi-calendar-month-item.current.primary[data-v-6fadcb4d]{background-color:var(--mvi-light-primary);color:#fff}.mvi-calendar .mvi-calendar-months .mvi-calendar-month .mvi-calendar-month-item.current.warn[data-v-6fadcb4d]{background-color:var(--mvi-light-warn);color:var(--mvi-warn-normal)}.mvi-calendar .mvi-calendar-months .mvi-calendar-month .mvi-calendar-month-item.current.error[data-v-6fadcb4d]{background-color:var(--mvi-light-error);color:var(--mvi-error-normal)}.mvi-calendar .mvi-calendar-date[data-v-6fadcb4d]{display:table;border-collapse:collapse;width:100%;vertical-align:middle}.mvi-calendar .mvi-calendar-date .mvi-calendar-date-header[data-v-6fadcb4d]{margin:0;padding:0;width:100%;display:table-header-group;font-weight:700;vertical-align:middle}.mvi-calendar .mvi-calendar-date .mvi-calendar-date-header .mvi-calendar-date-header-item[data-v-6fadcb4d]{display:table-cell;padding:.1rem;text-align:center;line-height:1.5;font-size:.28rem}.mvi-calendar .mvi-calendar-date .mvi-calendar-date-body[data-v-6fadcb4d]{display:table-row-group;width:100%;vertical-align:middle;padding:.2rem 0}.mvi-calendar .mvi-calendar-date .mvi-calendar-date-body .mvi-calendar-date-row[data-v-6fadcb4d]{display:table-row;margin:0;padding:0;width:100%;position:relative;vertical-align:middle}.mvi-calendar .mvi-calendar-date .mvi-calendar-date-body .mvi-calendar-date-row .mvi-calendar-date-column[data-v-6fadcb4d]{display:table-cell;position:relative;text-align:center;line-height:1.5;vertical-align:middle;-webkit-user-select:none;user-select:none}.mvi-calendar .mvi-calendar-date .mvi-calendar-date-body .mvi-calendar-date-row .mvi-calendar-date-column .mvi-calendar-date-item[data-v-6fadcb4d]{position:relative;display:inline-flex;justify-content:center;align-items:center;width:.88rem;height:.88rem;border-radius:50%;font-size:.28rem;cursor:pointer}.mvi-calendar .mvi-calendar-date .mvi-calendar-date-body .mvi-calendar-date-row .mvi-calendar-date-column .mvi-calendar-date-item[disabled][data-v-6fadcb4d]{opacity:.6}.mvi-calendar .mvi-calendar-date .mvi-calendar-date-body .mvi-calendar-date-row .mvi-calendar-date-column .mvi-calendar-date-item.none-current[data-v-6fadcb4d]{opacity:.6;cursor:auto}.mvi-calendar .mvi-calendar-date .mvi-calendar-date-body .mvi-calendar-date-row .mvi-calendar-date-column .mvi-calendar-date-item.none-current.allowed[data-v-6fadcb4d]{cursor:pointer}.mvi-calendar .mvi-calendar-date .mvi-calendar-date-body .mvi-calendar-date-row .mvi-calendar-date-column .mvi-calendar-date-item.active[data-v-6fadcb4d]:active:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:var(--mvi-bg-color-active);border:inherit;border-color:var(--mvi-bg-color-active);border-radius:inherit;transform:translate(-50%,-50%);opacity:.1;content:" ";box-sizing:content-box}.mvi-calendar .mvi-calendar-date .mvi-calendar-date-body .mvi-calendar-date-row .mvi-calendar-date-column .mvi-calendar-date-item.now.info[data-v-6fadcb4d]{color:var(--mvi-info-normal)}.mvi-calendar .mvi-calendar-date .mvi-calendar-date-body .mvi-calendar-date-row .mvi-calendar-date-column .mvi-calendar-date-item.now.success[data-v-6fadcb4d]{color:var(--mvi-success-normal)}.mvi-calendar .mvi-calendar-date .mvi-calendar-date-body .mvi-calendar-date-row .mvi-calendar-date-column .mvi-calendar-date-item.now.primary[data-v-6fadcb4d]{color:var(--mvi-primary-normal)}.mvi-calendar .mvi-calendar-date .mvi-calendar-date-body .mvi-calendar-date-row .mvi-calendar-date-column .mvi-calendar-date-item.now.warn[data-v-6fadcb4d]{color:var(--mvi-warn-normal)}.mvi-calendar .mvi-calendar-date .mvi-calendar-date-body .mvi-calendar-date-row .mvi-calendar-date-column .mvi-calendar-date-item.now.error[data-v-6fadcb4d]{color:var(--mvi-error-normal)}.mvi-calendar .mvi-calendar-date .mvi-calendar-date-body .mvi-calendar-date-row .mvi-calendar-date-column .mvi-calendar-date-item.current[data-v-6fadcb4d]{font-weight:700}.mvi-calendar .mvi-calendar-date .mvi-calendar-date-body .mvi-calendar-date-row .mvi-calendar-date-column .mvi-calendar-date-item.current.info[data-v-6fadcb4d]{background-color:var(--mvi-light-info);color:var(--mvi-info-normal)}.mvi-calendar .mvi-calendar-date .mvi-calendar-date-body .mvi-calendar-date-row .mvi-calendar-date-column .mvi-calendar-date-item.current.success[data-v-6fadcb4d]{background-color:var(--mvi-light-success);color:var(--mvi-success-normal)}.mvi-calendar .mvi-calendar-date .mvi-calendar-date-body .mvi-calendar-date-row .mvi-calendar-date-column .mvi-calendar-date-item.current.primary[data-v-6fadcb4d]{background-color:var(--mvi-light-primary);color:#fff}.mvi-calendar .mvi-calendar-date .mvi-calendar-date-body .mvi-calendar-date-row .mvi-calendar-date-column .mvi-calendar-date-item.current.warn[data-v-6fadcb4d]{background-color:var(--mvi-light-warn);color:var(--mvi-warn-normal)}.mvi-calendar .mvi-calendar-date .mvi-calendar-date-body .mvi-calendar-date-row .mvi-calendar-date-column .mvi-calendar-date-item.current.error[data-v-6fadcb4d]{background-color:var(--mvi-light-error);color:var(--mvi-error-normal)}.mvi-circle-progress[data-v-ba0e59ad]{display:inline-block;position:relative;margin:0;padding:0}.mvi-circle-progress>svg[data-v-ba0e59ad]{width:100%;height:100%;overflow:hidden}.mvi-circle-progress-track[data-v-ba0e59ad]{fill:none;stroke:var(--mvi-bg-color-dark);margin:0;padding:0}.mvi-circle-progress-bar[data-v-ba0e59ad]{fill:none;stroke:var(--mvi-info-normal);margin:0;padding:0;stroke-linecap:square}.mvi-circle-progress-tip[data-v-ba0e59ad]{display:inline-block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:100%;font-size:.28rem;color:var(--mvi-font-color-sub);line-height:1.5;text-align:center;z-index:10}.mvi-collapse[data-v-e78f08e3]{display:block;width:100%;background-color:var(--mvi-bg-color-common)}.mvi-collapse[data-v-e78f08e3] .mvi-collapse-item:last-child.border:after{border-bottom:none}.mvi-collapse[data-v-e78f08e3] .mvi-collapse-item:last-child .mvi-collapse-cell.border:not(.expand):after{border-bottom:none}.mvi-collapse-item[data-v-f821f4c2]{display:block;width:100%;overflow:hidden;background-color:inherit;position:relative}.mvi-collapse-item[disabled][data-v-f821f4c2]{opacity:.6}.mvi-collapse-item.border[data-v-f821f4c2]:after{display:block;position:absolute;left:0;bottom:0;content:"";height:0;border-bottom:1px solid var(--mvi-border-color);width:100%;box-sizing:content-box}.mvi-collapse-item .mvi-collapse-cell[data-v-f821f4c2]{background-color:inherit;color:inherit;cursor:pointer}.mvi-collapse-item .mvi-collapse-cell[data-v-f821f4c2] .mvi-cell-arrow{transition:transform .2s linear}.mvi-collapse-item .mvi-collapse-cell.expand[data-v-f821f4c2] .mvi-cell-arrow{transform:rotate(90deg)}.mvi-collapse-item .mvi-collapse-content[data-v-f821f4c2]{display:block;width:100%;padding:.2rem;font-size:.28rem;color:inherit;line-height:1.5}.mvi-date-chooser[data-v-1d54a060]{position:relative;display:inline-block}.mvi-date-chooser.block[data-v-1d54a060]{display:block}.mvi-date-chooser-layer[data-v-1d54a060]{display:block;width:100%;position:relative;overflow:hidden;background-color:var(--mvi-bg-color-common);color:var(--mvi-font-color-default);border-radius:inherit}.mvi-date-chooser-year-header[data-v-1d54a060]{display:flex;justify-content:space-between;align-items:center;width:100%;-webkit-user-select:none;user-select:none;padding:.2rem}.mvi-date-chooser-year-header .mvi-date-chooser-year-left[data-v-1d54a060],.mvi-date-chooser-year-header .mvi-date-chooser-year-right[data-v-1d54a060]{display:flex;justify-content:center;align-items:center;height:100%;padding:0 .3rem;color:var(--mvi-font-color-default);font-size:.28rem;transition:color .2s linear}.mvi-date-chooser-year-header .mvi-date-chooser-year-left[data-v-1d54a060]:hover,.mvi-date-chooser-year-header .mvi-date-chooser-year-right[data-v-1d54a060]:hover{cursor:pointer}.mvi-date-chooser-year-header .mvi-date-chooser-year-left:hover.info[data-v-1d54a060],.mvi-date-chooser-year-header .mvi-date-chooser-year-right:hover.info[data-v-1d54a060]{color:var(--mvi-info-normal)}.mvi-date-chooser-year-header .mvi-date-chooser-year-left:hover.success[data-v-1d54a060],.mvi-date-chooser-year-header .mvi-date-chooser-year-right:hover.success[data-v-1d54a060]{color:var(--mvi-success-normal)}.mvi-date-chooser-year-header .mvi-date-chooser-year-left:hover.warn[data-v-1d54a060],.mvi-date-chooser-year-header .mvi-date-chooser-year-right:hover.warn[data-v-1d54a060]{color:var(--mvi-warn-normal)}.mvi-date-chooser-year-header .mvi-date-chooser-year-left:hover.error[data-v-1d54a060],.mvi-date-chooser-year-header .mvi-date-chooser-year-right:hover.error[data-v-1d54a060]{color:var(--mvi-error-normal)}.mvi-date-chooser-year-header .mvi-date-chooser-year-left:hover.primary[data-v-1d54a060],.mvi-date-chooser-year-header .mvi-date-chooser-year-right:hover.primary[data-v-1d54a060]{color:var(--mvi-primary-normal)}.mvi-date-chooser-year-header .mvi-date-chooser-year-center[data-v-1d54a060]{display:flex;justify-content:flex-start;align-items:center;font-size:.32rem;color:var(--mvi-font-color-default)}.mvi-date-chooser-year-header .mvi-date-chooser-year-center>span:first-child+span[data-v-1d54a060]{margin:0 .2rem}.mvi-date-chooser-month-header[data-v-1d54a060]{display:flex;justify-content:space-between;align-items:center;width:100%;-webkit-user-select:none;user-select:none;padding:.2rem}.mvi-date-chooser-month-header .mvi-date-chooser-month-left[data-v-1d54a060],.mvi-date-chooser-month-header .mvi-date-chooser-month-right[data-v-1d54a060]{display:flex;justify-content:center;align-items:center;height:100%;padding:0 .3rem;color:var(--mvi-font-color-default);font-size:.28rem;transition:color .2s linear}.mvi-date-chooser-month-header .mvi-date-chooser-month-left[data-v-1d54a060]:hover,.mvi-date-chooser-month-header .mvi-date-chooser-month-right[data-v-1d54a060]:hover{cursor:pointer}.mvi-date-chooser-month-header .mvi-date-chooser-month-left:hover.info[data-v-1d54a060],.mvi-date-chooser-month-header .mvi-date-chooser-month-right:hover.info[data-v-1d54a060]{color:var(--mvi-info-normal)}.mvi-date-chooser-month-header .mvi-date-chooser-month-left:hover.success[data-v-1d54a060],.mvi-date-chooser-month-header .mvi-date-chooser-month-right:hover.success[data-v-1d54a060]{color:var(--mvi-success-normal)}.mvi-date-chooser-month-header .mvi-date-chooser-month-left:hover.warn[data-v-1d54a060],.mvi-date-chooser-month-header .mvi-date-chooser-month-right:hover.warn[data-v-1d54a060]{color:var(--mvi-warn-normal)}.mvi-date-chooser-month-header .mvi-date-chooser-month-left:hover.error[data-v-1d54a060],.mvi-date-chooser-month-header .mvi-date-chooser-month-right:hover.error[data-v-1d54a060]{color:var(--mvi-error-normal)}.mvi-date-chooser-month-header .mvi-date-chooser-month-left:hover.primary[data-v-1d54a060],.mvi-date-chooser-month-header .mvi-date-chooser-month-right:hover.primary[data-v-1d54a060]{color:var(--mvi-primary-normal)}.mvi-date-chooser-month-header .mvi-date-chooser-month-center[data-v-1d54a060]{display:flex;justify-content:flex-start;align-items:center;font-size:.32rem;color:var(--mvi-font-color-default);transition:color .2s linear}.mvi-date-chooser-month-header .mvi-date-chooser-month-center[data-v-1d54a060]:hover{cursor:pointer}.mvi-date-chooser-month-header .mvi-date-chooser-month-center:hover.info[data-v-1d54a060]{color:var(--mvi-info-normal)}.mvi-date-chooser-month-header .mvi-date-chooser-month-center:hover.success[data-v-1d54a060]{color:var(--mvi-success-normal)}.mvi-date-chooser-month-header .mvi-date-chooser-month-center:hover.warn[data-v-1d54a060]{color:var(--mvi-warn-normal)}.mvi-date-chooser-month-header .mvi-date-chooser-month-center:hover.error[data-v-1d54a060]{color:var(--mvi-error-normal)}.mvi-date-chooser-month-header .mvi-date-chooser-month-center:hover.primary[data-v-1d54a060]{color:var(--mvi-primary-normal)}.mvi-date-chooser-date-header[data-v-1d54a060]{display:flex;justify-content:space-between;align-items:center;width:100%;-webkit-user-select:none;user-select:none;padding:.2rem}.mvi-date-chooser-date-header .mvi-date-chooser-date-left[data-v-1d54a060],.mvi-date-chooser-date-header .mvi-date-chooser-date-right[data-v-1d54a060]{display:flex;justify-content:flex-start;align-items:center;height:100%}.mvi-date-chooser-date-header .mvi-date-chooser-date-left>div[data-v-1d54a060],.mvi-date-chooser-date-header .mvi-date-chooser-date-right>div[data-v-1d54a060]{display:flex;justify-content:center;align-items:center;height:100%;padding:0 .2rem;color:var(--mvi-font-color-default);font-size:.28rem;transition:color .2s linear}.mvi-date-chooser-date-header .mvi-date-chooser-date-left>div[data-v-1d54a060]:hover,.mvi-date-chooser-date-header .mvi-date-chooser-date-right>div[data-v-1d54a060]:hover{cursor:pointer}.mvi-date-chooser-date-header .mvi-date-chooser-date-left>div:hover.info[data-v-1d54a060],.mvi-date-chooser-date-header .mvi-date-chooser-date-right>div:hover.info[data-v-1d54a060]{color:var(--mvi-info-normal)}.mvi-date-chooser-date-header .mvi-date-chooser-date-left>div:hover.success[data-v-1d54a060],.mvi-date-chooser-date-header .mvi-date-chooser-date-right>div:hover.success[data-v-1d54a060]{color:var(--mvi-success-normal)}.mvi-date-chooser-date-header .mvi-date-chooser-date-left>div:hover.warn[data-v-1d54a060],.mvi-date-chooser-date-header .mvi-date-chooser-date-right>div:hover.warn[data-v-1d54a060]{color:var(--mvi-warn-normal)}.mvi-date-chooser-date-header .mvi-date-chooser-date-left>div:hover.error[data-v-1d54a060],.mvi-date-chooser-date-header .mvi-date-chooser-date-right>div:hover.error[data-v-1d54a060]{color:var(--mvi-error-normal)}.mvi-date-chooser-date-header .mvi-date-chooser-date-left>div:hover.primary[data-v-1d54a060],.mvi-date-chooser-date-header .mvi-date-chooser-date-right>div:hover.primary[data-v-1d54a060]{color:var(--mvi-primary-normal)}.mvi-date-chooser-date-header .mvi-date-chooser-date-center[data-v-1d54a060]{display:flex;justify-content:flex-start;align-items:center;font-size:.32rem;color:var(--mvi-font-color-default)}.mvi-date-chooser-date-header .mvi-date-chooser-date-center>div[data-v-1d54a060]{transition:color .2s linear}.mvi-date-chooser-date-header .mvi-date-chooser-date-center>div[data-v-1d54a060]:first-child{margin-right:.3rem}.mvi-date-chooser-date-header .mvi-date-chooser-date-center>div[data-v-1d54a060]:hover{cursor:pointer}.mvi-date-chooser-date-header .mvi-date-chooser-date-center>div:hover.info[data-v-1d54a060]{color:var(--mvi-info-normal)}.mvi-date-chooser-date-header .mvi-date-chooser-date-center>div:hover.success[data-v-1d54a060]{color:var(--mvi-success-normal)}.mvi-date-chooser-date-header .mvi-date-chooser-date-center>div:hover.warn[data-v-1d54a060]{color:var(--mvi-warn-normal)}.mvi-date-chooser-date-header .mvi-date-chooser-date-center>div:hover.error[data-v-1d54a060]{color:var(--mvi-error-normal)}.mvi-date-chooser-date-header .mvi-date-chooser-date-center>div:hover.primary[data-v-1d54a060]{color:var(--mvi-primary-normal)}.mvi-date-native-picker[data-v-a399825b]{width:0;height:0;opacity:0;border:none;min-width:0;max-width:0;position:relative}.mvi-picker[data-v-64671570]{display:block;width:100%;background-color:var(--mvi-bg-color-common);color:var(--mvi-font-color-default);font-size:.28rem}.mvi-picker .mvi-picker-loading[data-v-64671570]{display:flex;justify-content:center;align-items:center;width:100%;background-color:var(--mvi-bg-color-common)}.mvi-picker .mvi-picker-toolbar[data-v-64671570]{display:flex;justify-content:space-between;align-items:center;height:.88rem;border-bottom:1px solid var(--mvi-border-color);padding:0}.mvi-picker .mvi-picker-toolbar .mvi-picker-toolbar-confirm[data-v-64671570]{display:flex;position:relative;justify-content:center;align-items:center;font-size:.32rem;color:var(--mvi-primary-normal);font-weight:700;height:100%;padding:0 .3rem;cursor:pointer;-webkit-user-select:none;user-select:none}.mvi-picker .mvi-picker-toolbar .mvi-picker-toolbar-cancel[data-v-64671570]{display:flex;position:relative;justify-content:center;align-items:center;font-size:.32rem;color:var(--mvi-font-color-sub);height:100%;padding:0 .3rem;cursor:pointer;-webkit-user-select:none;user-select:none}.mvi-picker .mvi-picker-toolbar .mvi-picker-toolbar-title[data-v-64671570]{font-size:.28rem;color:var(--mvi-font-color-default);max-width:50%;line-height:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mvi-picker .mvi-picker-content[data-v-64671570]{display:flex;justify-content:space-between;align-items:center;width:100%;position:relative;overflow:hidden}.mvi-picker .mvi-picker-content .mvi-picker-items[data-v-64671570]{display:block;flex:1;height:100%;position:relative;color:var(--mvi-font-color-default);font-size:.28rem;cursor:pointer;-webkit-user-select:none;user-select:none}.mvi-picker .mvi-picker-content .mvi-picker-items>.mvi-picker-item[data-v-64671570]{display:flex;justify-content:center;align-items:center;padding:0 .1rem}.mvi-picker .mvi-picker-content .mvi-picker-items>.mvi-picker-item>div[data-v-64671570]{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.mvi-picker .mvi-picker-content .mvi-picker-active[data-v-64671570]{position:absolute;left:0;top:50%;transform:translateY(-50%);-webkit-transform:translateY(-50%);width:100%;z-index:10;pointer-events:none}.mvi-picker .mvi-picker-content .mvi-picker-active[data-v-64671570]:before,.mvi-picker .mvi-picker-content .mvi-picker-active[data-v-64671570]:after{position:absolute;left:0;display:block;width:100%;height:0;border-bottom:1px solid var(--mvi-border-color);content:""}.mvi-picker .mvi-picker-content .mvi-picker-active[data-v-64671570]:before{top:0}.mvi-picker .mvi-picker-content .mvi-picker-active[data-v-64671570]:after{bottom:0}.mvi-picker .mvi-picker-content .mvi-picker-mask[data-v-64671570]{position:absolute;top:0;left:0;z-index:5;width:100%;height:100%;background-image:linear-gradient(180deg,var(--mvi-bg-color-default-opacity-9),var(--mvi-bg-color-default-opacity-6)),linear-gradient(0deg,var(--mvi-bg-color-default-opacity-9),var(--mvi-bg-color-default-opacity-6));background-repeat:no-repeat;background-position:top,bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:none}.mvi-progress[data-v-6b0d259d]{position:relative;display:block;width:100%;height:.2rem;background-color:var(--mvi-bg-color-dark);border-radius:.08rem}.mvi-progress.square[data-v-6b0d259d]{border-radius:0}.mvi-progress.round[data-v-6b0d259d]{border-radius:999rem}.mvi-progress .mvi-progress-bar[data-v-6b0d259d]{display:block;position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--mvi-info-normal);border-radius:inherit;border-top-right-radius:0;border-bottom-right-radius:0}.mvi-progress .mvi-progress-tooltip[data-v-6b0d259d]{position:absolute;display:flex;justify-content:center;align-items:center;right:0;top:50%;transform:translateY(-50%);width:auto;min-height:100%;font-size:.24rem;color:#fff;padding-right:.1rem}.mvi-slider[data-v-03da2868]{position:relative;display:block;width:100%;height:.2rem;background:var(--mvi-bg-color-dark);touch-action:none;border-radius:.08rem;-webkit-user-select:none;user-select:none}.mvi-slider[disabled][data-v-03da2868]{opacity:.6}.mvi-slider .mvi-slider-bar[data-v-03da2868]{display:block;position:absolute;left:0;top:0;width:100%;height:100%;background:var(--mvi-info-normal);border-radius:inherit;touch-action:none}.mvi-slider .mvi-slider-button[data-v-03da2868]{position:absolute;left:0;top:50%;cursor:pointer;transform:translateY(-50%)}.mvi-slider .mvi-slider-button .mvi-slider-button-el[data-v-03da2868]{display:block;min-width:.4rem;min-height:.4rem;background:#fff;box-shadow:var(--mvi-boxshadow);border-radius:50%}.mvi-slider.vertical[data-v-03da2868]{height:100%;width:.2rem}.mvi-slider.vertical .mvi-slider-button[data-v-03da2868]{top:0;left:50%;transform:translate(-50%)}.mvi-slider.square[data-v-03da2868]{border-radius:0}.mvi-slider.round[data-v-03da2868]{border-radius:999rem}.mvi-date-picker[data-v-be140d91]{display:block;width:100%;position:relative}.mvi-field[data-v-8b3058e7]{display:flex;justify-content:flex-start;align-items:center;width:100%;border-radius:.08rem;color:var(--mvi-font-color-default);background-color:var(--mvi-bg-color-common)}.mvi-field.small[data-v-8b3058e7]{font-size:.28rem}.mvi-field.small[data-v-8b3058e7]:not([data-type=textarea]){height:.72rem}.mvi-field.small:not([data-type=textarea]) .mvi-field-input[data-v-8b3058e7]{padding:0 .2rem}.mvi-field.small[data-type=textarea] .mvi-field-input[data-v-8b3058e7]{padding:.1rem .2rem}.mvi-field.small .mvi-field-prepend[data-v-8b3058e7],.mvi-field.small .mvi-field-append[data-v-8b3058e7],.mvi-field.small .mvi-field-prefix[data-v-8b3058e7],.mvi-field.small .mvi-field-suffix[data-v-8b3058e7],.mvi-field.small .mvi-field-clear[data-v-8b3058e7]{padding:0 .2rem}.mvi-field.medium[data-v-8b3058e7]{font-size:.32rem}.mvi-field.medium[data-v-8b3058e7]:not([data-type=textarea]){height:.88rem}.mvi-field.medium:not([data-type=textarea]) .mvi-field-input[data-v-8b3058e7]{padding:0 .3rem}.mvi-field.medium[data-type=textarea] .mvi-field-input[data-v-8b3058e7]{padding:.2rem .3rem}.mvi-field.medium .mvi-field-prepend[data-v-8b3058e7],.mvi-field.medium .mvi-field-append[data-v-8b3058e7],.mvi-field.medium .mvi-field-prefix[data-v-8b3058e7],.mvi-field.medium .mvi-field-suffix[data-v-8b3058e7],.mvi-field.medium .mvi-field-clear[data-v-8b3058e7]{padding:0 .3rem}.mvi-field.large[data-v-8b3058e7]{font-size:.36rem}.mvi-field.large[data-v-8b3058e7]:not([data-type=textarea]){height:1rem}.mvi-field.large:not([data-type=textarea]) .mvi-field-input[data-v-8b3058e7]{padding:0 .4rem}.mvi-field.large[data-type=textarea] .mvi-field-input[data-v-8b3058e7]{padding:.3rem .4rem}.mvi-field.large .mvi-field-prepend[data-v-8b3058e7],.mvi-field.large .mvi-field-append[data-v-8b3058e7],.mvi-field.large .mvi-field-prefix[data-v-8b3058e7],.mvi-field.large .mvi-field-suffix[data-v-8b3058e7],.mvi-field.large .mvi-field-clear[data-v-8b3058e7]{padding:0 .4rem}.mvi-field.round[data-v-8b3058e7]{border-radius:999rem}.mvi-field.square[data-v-8b3058e7]{border-radius:0}.mvi-field[disabled][data-v-8b3058e7]{opacity:.6}.mvi-field-append[data-v-8b3058e7],.mvi-field-prepend[data-v-8b3058e7]{display:flex;justify-content:center;align-items:center;height:100%;border-radius:0;background-color:var(--mvi-bg-color-dark)}.mvi-field-append[data-v-8b3058e7]:hover,.mvi-field-prepend[data-v-8b3058e7]:hover{cursor:pointer}.mvi-field-prepend[data-v-8b3058e7]{border-top-left-radius:inherit;border-bottom-left-radius:inherit}.mvi-field-append[data-v-8b3058e7]{border-top-right-radius:inherit;border-bottom-right-radius:inherit}.mvi-field-body[data-v-8b3058e7]{display:flex;justify-content:flex-start;align-items:center;width:100%;height:100%;flex:1;background-color:inherit;border-radius:inherit;border:1px solid var(--mvi-border-color);transition:border-color .6s,box-shadow .6s}.mvi-field-body.info[data-v-8b3058e7]{border-color:var(--mvi-info-normal);box-shadow:0 0 .16rem var(--mvi-info-shadow)}.mvi-field-body.success[data-v-8b3058e7]{border-color:var(--mvi-success-normal);box-shadow:0 0 .16rem var(--mvi-success-shadow)}.mvi-field-body.warn[data-v-8b3058e7]{border-color:var(--mvi-warn-normal);box-shadow:0 0 .16rem var(--mvi-warn-shadow)}.mvi-field-body.primary[data-v-8b3058e7]{border-color:var(--mvi-primary-normal);box-shadow:0 0 .16rem var(--mvi-primary-shadow)}.mvi-field-body.error[data-v-8b3058e7]{border-color:var(--mvi-error-normal);box-shadow:0 0 .16rem var(--mvi-error-shadow)}.mvi-field-body.left-none-radius[data-v-8b3058e7]{border-top-left-radius:0;border-bottom-left-radius:0}.mvi-field-body.right-none-radius[data-v-8b3058e7]{border-top-right-radius:0;border-bottom-right-radius:0}.mvi-field-body .mvi-field-prefix[data-v-8b3058e7],.mvi-field-body .mvi-field-suffix[data-v-8b3058e7],.mvi-field-body .mvi-field-clear[data-v-8b3058e7]{display:flex;justify-content:center;align-items:center;height:100%;border-radius:0}.mvi-field-body .mvi-field-prefix[data-v-8b3058e7]:hover,.mvi-field-body .mvi-field-suffix[data-v-8b3058e7]:hover,.mvi-field-body .mvi-field-clear[data-v-8b3058e7]:hover{cursor:pointer}.mvi-field-body .mvi-field-clear[data-v-8b3058e7]{opacity:.6}.mvi-field-body .mvi-field-prefix[data-v-8b3058e7]{border-top-left-radius:inherit;border-bottom-left-radius:inherit}.mvi-field-body .mvi-field-suffix[data-v-8b3058e7],.mvi-field-body .mvi-field-clear[data-v-8b3058e7]{border-top-right-radius:inherit;border-bottom-right-radius:inherit}.mvi-field-body .mvi-field-input[data-v-8b3058e7]{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:block;width:100%;flex:1;margin:0;padding:0;border:none;border-radius:inherit;background-color:inherit;color:inherit;font-size:inherit;height:100%;line-height:1.5;resize:none;font-family:inherit}.mvi-field-body .mvi-field-input[data-v-8b3058e7]::-webkit-input-placeholder,.mvi-field-body .mvi-field-input[data-v-8b3058e7]::placeholder{color:inherit;font-family:inherit;font-size:inherit;opacity:.5;vertical-align:middle}.mvi-field-body .mvi-field-input.left-none-radius[data-v-8b3058e7]{border-top-left-radius:0;border-bottom-left-radius:0}.mvi-field-body .mvi-field-input.right-none-radius[data-v-8b3058e7]{border-top-right-radius:0;border-bottom-right-radius:0}.mvi-field-body .mvi-field-input[disabled][data-v-8b3058e7]{background-color:inherit;color:inherit;opacity:1}.mvi-form[data-v-ba6896c8]{display:flex;width:100%;justify-content:flex-start;align-items:center;flex-wrap:wrap}.mvi-form.block[data-v-ba6896c8]{display:block}.mvi-form-el[data-v-c09bf8dd]{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap;width:6.4rem;padding:.2rem}.mvi-form-el.block[data-v-c09bf8dd]{width:100%}.mvi-form-label[data-v-c09bf8dd]{display:block;width:1.2rem;text-align:right;margin:0 .4rem 0 0;color:var(--mvi-font-color-default);font-weight:700}.mvi-form-label.block[data-v-c09bf8dd]{width:100%;text-align:left;margin:0 0 .2rem}.mvi-form-container[data-v-c09bf8dd]{display:block;width:100%;flex:1}.mvi-image[data-v-23fb9b11]{display:inline-block;overflow:hidden;position:relative}.mvi-image img[data-v-23fb9b11]{display:block;margin:0;padding:0;border-radius:inherit;width:100%;height:100%;position:relative;z-index:1}.mvi-image img.mvi-image-contain[data-v-23fb9b11]{object-fit:contain}.mvi-image img.mvi-image-cover[data-v-23fb9b11]{object-fit:cover}.mvi-image img.mvi-image-fill[data-v-23fb9b11]{object-fit:fill}.mvi-image img.mvi-image-none[data-v-23fb9b11]{object-fit:none}.mvi-image img.mvi-image-response[data-v-23fb9b11]{object-fit:scale-down}.mvi-image .mvi-image-error[data-v-23fb9b11],.mvi-image .mvi-image-loading[data-v-23fb9b11]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;position:absolute;left:0;top:0;background-color:var(--mvi-bg-color-dark);color:var(--mvi-font-color-sub);z-index:2}.mvi-color-picker[data-v-179d24ea]{display:block;width:100%;height:auto;background-color:var(--mvi-bg-color-common);padding:.3rem}.mvi-color-picker .mvi-color-picker-panel[data-v-179d24ea]{display:block;width:100%;position:relative}.mvi-color-picker .mvi-color-picker-panel[data-v-179d24ea]:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(to right,white,transparent)}.mvi-color-picker .mvi-color-picker-panel[data-v-179d24ea]:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(to top,black,transparent)}.mvi-color-picker .mvi-color-picker-panel .mvi-color-picker-panel-slider[data-v-179d24ea]{display:block;position:absolute;width:.4rem;height:.4rem;background-color:transparent;border:1px solid var(--mvi-border-color);top:-.2rem;left:calc(100% - .2rem);border-radius:100%;z-index:20;background-color:var(--mvi-bg-color-common);opacity:.5;cursor:pointer}.mvi-color-picker .mvi-color-picker-slider[data-v-179d24ea]{width:.4rem;height:.4rem;background-color:var(--mvi-bg-color-common);border:1px solid var(--mvi-border-color);left:-.2rem;top:0;opacity:.5;cursor:pointer}.mvi-color-picker .mvi-color-picker-alpha[data-v-179d24ea]{display:block;position:relative;width:100%;background-color:#fff;background-image:linear-gradient(45deg,#c5c5c5 25%,transparent 0,transparent 75%,#c5c5c5 0,#c5c5c5),linear-gradient(45deg,#c5c5c5 25%,transparent 0,transparent 75%,#c5c5c5 0,#c5c5c5);background-size:.2rem .2rem;background-position:0 0,.1rem .1rem}.mvi-color-picker[data-v-179d24ea] .mvi-slider{margin-top:.2rem}.mvi-list[data-v-66cbb05b]{display:block;width:100%}.mvi-list .mvi-list-loading[data-v-66cbb05b],.mvi-list .mvi-list-finished[data-v-66cbb05b],.mvi-list .mvi-list-error[data-v-66cbb05b],.mvi-list .mvi-list-content[data-v-66cbb05b]{display:flex;justify-content:center;align-items:center;width:100%;padding:.3rem;font-size:.28rem;color:var(--mvi-font-color-mute)}.mvi-modal[data-v-b601e19c]{display:block;position:absolute;left:50%;top:50%;margin:0;padding:0;width:6rem;transform:translate(-50%,-50%);background:transparent}.mvi-modal .mvi-modal-wrapper[data-v-b601e19c]{display:flex;justify-content:flex-start;flex-direction:column;width:100%;background:var(--mvi-bg-color-common);border-radius:.08rem;box-shadow:var(--mvi-boxshadow);position:relative}.mvi-modal .mvi-modal-title[data-v-b601e19c]{display:block;width:100%;font-weight:700;font-size:.32rem;color:var(--mvi-font-color-default);padding:.3rem}.mvi-modal .mvi-modal-title.ellipsis[data-v-b601e19c]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mvi-modal .mvi-modal-title.center[data-v-b601e19c]{text-align:center}.mvi-modal .mvi-modal-times[data-v-b601e19c]{position:absolute;right:.2rem;top:.2rem;display:flex;justify-content:center;align-items:center;color:var(--mvi-font-color-mute);font-size:.24rem;opacity:.8;transition:opacity .3s}.mvi-modal .mvi-modal-times[data-v-b601e19c]:hover{cursor:pointer;opacity:1}.mvi-modal .mvi-modal-content[data-v-b601e19c]{display:block;padding:.3rem;flex:1;overflow-x:hidden;overflow-y:auto;border-radius:inherit;font-size:.28rem;color:var(--mvi-font-color-default)}.mvi-modal .mvi-modal-footer[data-v-b601e19c]{display:flex;justify-content:flex-end;align-items:center;border-top:1px solid var(--mvi-border-color);padding:.2rem .3rem;text-align:right;font-size:.28rem;color:var(--mvi-font-color-sub)}.mvi-modal-narrow-enter-from[data-v-b601e19c]{transform:translateZ(0) scale(1.4);opacity:0}.mvi-modal-scale-enter-from[data-v-b601e19c],.mvi-modal-scale-leave-to[data-v-b601e19c],.mvi-modal-narrow-leave-to[data-v-b601e19c]{transform:translateZ(0) scale(.6);opacity:0}.mvi-modal-translate-bottom-enter-from[data-v-b601e19c],.mvi-modal-translate-bottom-leave-to[data-v-b601e19c]{transform:translateY(1rem);opacity:0}.mvi-modal-translate-top-enter-from[data-v-b601e19c],.mvi-modal-translate-top-leave-to[data-v-b601e19c]{transform:translateY(-1rem)}.mvi-modal-translate-left-enter-from[data-v-b601e19c],.mvi-modal-translate-left-leave-to[data-v-b601e19c]{transform:translate(-1rem)}.mvi-modal-translate-right-enter-from[data-v-b601e19c],.mvi-modal-translate-right-leave-to[data-v-b601e19c]{transform:translate(1rem)}.mvi-page[data-v-1f69b033]{display:flex;justify-content:space-between;align-items:center;background-color:var(--mvi-bg-color-common);width:fit-content;height:.72rem;border:1px solid var(--mvi-border-color);font-size:.28rem;border-radius:.08rem;overflow:hidden}.mvi-page .mvi-page-first[data-v-1f69b033]{display:flex;justify-content:center;align-items:center;position:relative;height:100%;padding:0 .3rem;border-right:1px solid var(--mvi-border-color);color:var(--mvi-info-normal);white-space:nowrap;cursor:pointer}.mvi-page .mvi-page-first.active[data-v-1f69b033]:active:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:var(--mvi-bg-color-active);border:inherit;border-color:var(--mvi-bg-color-active);border-radius:inherit;transform:translate(-50%,-50%);opacity:.1;content:" ";box-sizing:content-box}.mvi-page .mvi-page-first[disabled][data-v-1f69b033]{color:var(--mvi-font-color-mute)}.mvi-page .mvi-page-first .mvi-icon.margin-right[data-v-1f69b033]{margin-right:.1rem}.mvi-page .mvi-page-last[data-v-1f69b033]{display:flex;justify-content:center;align-items:center;position:relative;height:100%;padding:0 .3rem;border-left:1px solid var(--mvi-border-color);color:var(--mvi-info-normal);white-space:nowrap;cursor:pointer}.mvi-page .mvi-page-last.active[data-v-1f69b033]:active:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:var(--mvi-bg-color-active);border:inherit;border-color:var(--mvi-bg-color-active);border-radius:inherit;transform:translate(-50%,-50%);opacity:.1;content:" ";box-sizing:content-box}.mvi-page .mvi-page-last[disabled][data-v-1f69b033]{color:var(--mvi-font-color-mute)}.mvi-page .mvi-page-last .mvi-icon.margin-left[data-v-1f69b033]{margin-left:.1rem}.mvi-page .mvi-page-prev[data-v-1f69b033]{display:flex;justify-content:center;align-items:center;position:relative;height:100%;padding:0 .3rem;border-right:1px solid var(--mvi-border-color);color:var(--mvi-info-normal);white-space:nowrap;cursor:pointer}.mvi-page .mvi-page-prev.active[data-v-1f69b033]:active:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:var(--mvi-bg-color-active);border:inherit;border-color:var(--mvi-bg-color-active);border-radius:inherit;transform:translate(-50%,-50%);opacity:.1;content:" ";box-sizing:content-box}.mvi-page .mvi-page-prev[disabled][data-v-1f69b033]{color:var(--mvi-font-color-mute)}.mvi-page .mvi-page-prev .mvi-icon.margin-right[data-v-1f69b033]{margin-right:.1rem}.mvi-page .mvi-page-next[data-v-1f69b033]{display:flex;justify-content:center;align-items:center;position:relative;height:100%;padding:0 .3rem;border-left:1px solid var(--mvi-border-color);color:var(--mvi-info-normal);white-space:nowrap;cursor:pointer}.mvi-page .mvi-page-next.active[data-v-1f69b033]:active:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:var(--mvi-bg-color-active);border:inherit;border-color:var(--mvi-bg-color-active);border-radius:inherit;transform:translate(-50%,-50%);opacity:.1;content:" ";box-sizing:content-box}.mvi-page .mvi-page-next[disabled][data-v-1f69b033]{color:var(--mvi-font-color-mute)}.mvi-page .mvi-page-next .mvi-icon.margin-left[data-v-1f69b033]{margin-left:.1rem}.mvi-page .mvi-page-numbers[data-v-1f69b033]{display:block;height:100%}.mvi-page .mvi-page-numbers .mvi-page-numbers-simple[data-v-1f69b033]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;color:var(--mvi-font-color-sub);vertical-align:middle;padding:0 .4rem;white-space:nowrap}.mvi-page .mvi-page-numbers .mvi-page-numbers-items[data-v-1f69b033]{display:flex;justify-content:space-between;align-items:center;width:100%;height:100%;position:relative}.mvi-page .mvi-page-numbers .mvi-page-numbers-items .mvi-page-numbers-item[data-v-1f69b033]{width:.72rem;display:flex;justify-content:center;align-items:center;position:relative;height:100%;border-right:1px solid var(--mvi-border-color);color:var(--mvi-info-normal);white-space:nowrap;cursor:pointer}.mvi-page .mvi-page-numbers .mvi-page-numbers-items .mvi-page-numbers-item[data-v-1f69b033]:last-child{border-right:none}.mvi-page .mvi-page-numbers .mvi-page-numbers-items .mvi-page-numbers-item.active[data-v-1f69b033]:active:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:var(--mvi-bg-color-active);border:inherit;border-color:var(--mvi-bg-color-active);border-radius:inherit;transform:translate(-50%,-50%);opacity:.1;content:" ";box-sizing:content-box}.mvi-page .mvi-page-numbers .mvi-page-numbers-items .mvi-page-numbers-item.number-active[data-v-1f69b033]{background-color:var(--mvi-info-normal);color:#fff}.mvi-search[data-v-9e26b64d]{display:flex;justify-content:flex-start;align-items:center;width:100%;position:relative;padding:.2rem;background-color:var(--mvi-bg-color-common);color:var(--mvi-font-color-default);font-size:.28rem;transition:opacity .3s}.mvi-search[disabled][data-v-9e26b64d]{opacity:.6}.mvi-search[disabled] .mvi-search-cancel[data-v-9e26b64d]:hover{opacity:.8}.mvi-search .mvi-search-label[data-v-9e26b64d]{display:flex;justify-content:center;align-items:center;padding:0;padding-right:.2rem;height:.68rem;white-space:nowrap}.mvi-search .mvi-search-input-container[data-v-9e26b64d]{display:flex;justify-content:space-between;position:relative;width:100%;flex:1;height:.68rem;border-radius:.08rem;background-color:var(--mvi-bg-color-default);color:var(--mvi-font-color-default)}.mvi-search .mvi-search-input-container.round[data-v-9e26b64d]{border-radius:999rem}.mvi-search .mvi-search-input-container .mvi-search-left-icon[data-v-9e26b64d],.mvi-search .mvi-search-input-container .mvi-search-right-icon[data-v-9e26b64d]{display:flex;justify-content:center;align-items:center;height:.68rem;width:.68rem}.mvi-search .mvi-search-input-container .mvi-search-clear[data-v-9e26b64d]{display:flex;justify-content:center;align-items:center;height:.68rem;width:.68rem;opacity:.5}.mvi-search .mvi-search-input-container .mvi-search-clear[data-v-9e26b64d]:hover{cursor:pointer}.mvi-search .mvi-search-input-container .mvi-search-input[data-v-9e26b64d]{display:block;width:100%;flex:1;height:100%;border:none;border-radius:inherit;padding:0 .3rem;line-height:1.5;color:inherit;background-color:inherit;font-family:PingFang SC,Helvetica Neue,Helvetica,Roboto,Segoe UI,Microsoft YaHei,Arial,sans-serif;background-image:none;margin:0;font-size:.28rem}.mvi-search .mvi-search-input-container .mvi-search-input[data-v-9e26b64d]::-webkit-input-placeholder,.mvi-search .mvi-search-input-container .mvi-search-input[data-v-9e26b64d]::placeholder{color:inherit;opacity:.5;vertical-align:middle;font-family:inherit;font-size:inherit}.mvi-search .mvi-search-input-container .mvi-search-input.left-none-radius[data-v-9e26b64d]{border-top-left-radius:0;border-bottom-left-radius:0}.mvi-search .mvi-search-input-container .mvi-search-input.right-none-radius[data-v-9e26b64d]{border-top-right-radius:0;border-bottom-right-radius:0}.mvi-search .mvi-search-cancel[data-v-9e26b64d]{display:flex;justify-content:center;align-items:center;padding:0;padding-left:.2rem;height:.68rem;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;opacity:.8;transition:opacity .3s}.mvi-search .mvi-search-cancel[data-v-9e26b64d]:hover{opacity:1}.mvi-select[data-v-fdf439db]{display:flex;justify-content:flex-start;align-items:center;width:100%;position:relative;font-family:PingFang SC,Helvetica Neue,Helvetica,Roboto,Segoe UI,Microsoft YaHei,Arial,sans-serif;color:var(--mvi-font-color-default);border-radius:.08rem;background-color:var(--mvi-bg-color-common);border:1px solid var(--mvi-border-color);transition:border-color .6s,box-shadow .6s;box-shadow:none}.mvi-select[data-v-fdf439db]:hover{cursor:pointer}.mvi-select.info[data-v-fdf439db]{border-color:var(--mvi-info-normal);box-shadow:0 0 .16rem var(--mvi-info-shadow)}.mvi-select.success[data-v-fdf439db]{border-color:var(--mvi-success-normal);box-shadow:0 0 .16rem var(--mvi-success-shadow)}.mvi-select.primary[data-v-fdf439db]{border-color:var(--mvi-primary-normal);box-shadow:0 0 .16rem var(--mvi-primary-shadow)}.mvi-select.warn[data-v-fdf439db]{border-color:var(--mvi-warn-normal);box-shadow:0 0 .16rem var(--mvi-warn-shadow)}.mvi-select.error[data-v-fdf439db]{border-color:var(--mvi-error-normal);box-shadow:0 0 .16rem var(--mvi-error-shadow)}.mvi-select .mvi-select-label[data-v-fdf439db]{position:relative;vertical-align:middle;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mvi-select .mvi-select-label.placeholder[data-v-fdf439db]:before{position:relative;content:attr(data-placeholder);color:inherit;font-family:inherit;font-size:inherit;opacity:.5;vertical-align:middle}.mvi-select .mvi-select-icon[data-v-fdf439db]{position:absolute;top:auto;color:inherit;opacity:.6;transition:transform .2s}.mvi-select .mvi-select-icon.active[data-v-fdf439db]{transform:rotate(180deg)}.mvi-select .mvi-clear-icon[data-v-fdf439db]{position:absolute;top:auto;color:inherit;opacity:.5;transition:opacity .2s}.mvi-select.small[data-v-fdf439db]{padding:0 .6rem 0 .2rem;height:.72rem;font-size:.28rem}.mvi-select.small .mvi-select-icon[data-v-fdf439db],.mvi-select.small .mvi-clear-icon[data-v-fdf439db]{right:.2rem;font-size:.24rem}.mvi-select.medium[data-v-fdf439db]{padding:0 .9rem 0 .3rem;height:.88rem;font-size:.32rem}.mvi-select.medium .mvi-select-icon[data-v-fdf439db],.mvi-select.medium .mvi-clear-icon[data-v-fdf439db]{right:.3rem;font-size:.28rem}.mvi-select.large[data-v-fdf439db]{padding:0 1.2rem 0 .4rem;height:1rem;font-size:.36rem}.mvi-select.large .mvi-select-icon[data-v-fdf439db],.mvi-select.large .mvi-clear-icon[data-v-fdf439db]{right:.4rem;font-size:.32rem}.mvi-select.round[data-v-fdf439db]{border-radius:999rem}.mvi-select.square[data-v-fdf439db]{border-radius:0}.mvi-select[disabled][data-v-fdf439db]{opacity:.6;cursor:not-allowed}.mvi-select-menu[data-v-fdf439db]{display:block;padding:0;overflow:auto;overflow-x:hidden;padding:.1rem 0}.mvi-select-menu .mvi-select-empty[data-v-fdf439db]{display:block;width:100%;text-align:center;color:var(--mvi-font-color-mute)}.mvi-select-menu .mvi-select-option[data-v-fdf439db]{display:flex;justify-content:space-between;align-items:center;line-height:1;transition:background-color .3s}.mvi-select-menu .mvi-select-option[data-v-fdf439db]:hover:not([disabled]){cursor:pointer;background-color:var(--mvi-bg-color-default)}.mvi-select-menu .mvi-select-option[disabled][data-v-fdf439db]{opacity:.6;touch-action:none;-webkit-user-select:none;user-select:none}.mvi-select-menu .mvi-select-option .mvi-select-option-value[data-v-fdf439db]{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mvi-select-menu.small .mvi-select-empty[data-v-fdf439db],.mvi-select-menu.small .mvi-select-option[data-v-fdf439db]{padding:.2rem;font-size:.28rem}.mvi-select-menu.medium .mvi-select-empty[data-v-fdf439db],.mvi-select-menu.medium .mvi-select-option[data-v-fdf439db]{padding:.3rem;font-size:.32rem}.mvi-select-menu.large .mvi-select-empty[data-v-fdf439db]{padding:.4rem;font-size:.36rem}.mvi-select-menu.large .mvi-select-option[data-v-fdf439db]{padding:.3rem .4rem;font-size:.36rem}.mvi-skeleton-container[data-v-616c2ea9]{display:block;width:100%;padding:0 .3rem}.mvi-skeleton-container .mvi-skeleton[data-v-616c2ea9]{display:flex;justify-content:flex-start;align-items:flex-start;width:100%}.mvi-skeleton-container .mvi-skeleton.animation[data-v-616c2ea9]{animation:mvi-skeleton-616c2ea9 ease-in-out 1.2s infinite}.mvi-skeleton-container .mvi-skeleton .mvi-skeleton-avatar[data-v-616c2ea9]{display:block;margin-right:.3rem}.mvi-skeleton-container .mvi-skeleton .mvi-skeleton-avatar .mvi-skeleton-avatar-el[data-v-616c2ea9]{display:block;width:1rem;height:1rem;background:var(--mvi-bg-color-dark)}.mvi-skeleton-container .mvi-skeleton .mvi-skeleton-avatar .mvi-skeleton-avatar-el.round[data-v-616c2ea9]{border-radius:50%}.mvi-skeleton-container .mvi-skeleton .mvi-skeleton-rows[data-v-616c2ea9]{display:block;flex:1}.mvi-skeleton-container .mvi-skeleton .mvi-skeleton-rows .mvi-skeleton-title[data-v-616c2ea9]{display:block;width:40%;height:.44rem;background-color:var(--mvi-bg-color-dark);margin-bottom:.3rem}.mvi-skeleton-container .mvi-skeleton .mvi-skeleton-rows .mvi-skeleton-title.round[data-v-616c2ea9]{border-radius:999rem}.mvi-skeleton-container .mvi-skeleton .mvi-skeleton-rows .mvi-skeleton-row[data-v-616c2ea9]{display:block;width:100%;height:.36rem;background-color:var(--mvi-bg-color-dark);margin-bottom:.2rem}.mvi-skeleton-container .mvi-skeleton .mvi-skeleton-rows .mvi-skeleton-row[data-v-616c2ea9]:last-of-type{margin-bottom:0}.mvi-skeleton-container .mvi-skeleton .mvi-skeleton-rows .mvi-skeleton-row.round[data-v-616c2ea9]{border-radius:999rem}@keyframes mvi-skeleton-616c2ea9{50%{opacity:.6}}.mvi-steps[data-v-3df8e56e]{display:flex;position:relative;justify-content:space-between;align-items:center;width:100%;padding:.2rem;background-color:var(--mvi-bg-color-common)}.mvi-steps.vertical[data-v-3df8e56e]{flex-direction:column}.mvi-step-vertical[data-v-b2c607ef]{display:block;width:100%;padding:.2rem 0 .2rem .6rem;position:relative}.mvi-step-vertical .mvi-step-vertical-label[data-v-b2c607ef]{display:block;width:100%;font-size:.24rem;color:var(--mvi-font-color-mute);position:relative;padding-left:.2rem}.mvi-step-vertical .mvi-step-vertical-label.finish[data-v-b2c607ef]{color:var(--mvi-success-normal)}.mvi-step-vertical .mvi-step-vertical-container[data-v-b2c607ef]{position:absolute;left:0;top:.25rem;width:.6rem;display:flex;justify-content:flex-start;flex-direction:column;align-items:center;height:100%}.mvi-step-vertical .mvi-step-vertical-container .mvi-step-vertical-icon[data-v-b2c607ef]{display:flex;justify-content:center;align-items:center}.mvi-step-vertical .mvi-step-vertical-container .mvi-step-vertical-line[data-v-b2c607ef]{display:block;flex:1;width:0;border-right:2px solid var(--mvi-font-color-mute)}.mvi-step-vertical .mvi-step-vertical-container .mvi-step-vertical-line.finish[data-v-b2c607ef]{border-right-color:var(--mvi-success-normal)}.mvi-step-vertical .mvi-step-vertical-container .mvi-step-vertical-line.last[data-v-b2c607ef]{display:none}.mvi-step[data-v-b2c607ef]{display:flex;position:relative;flex:1;padding-bottom:.6rem}.mvi-step.last[data-v-b2c607ef]{position:absolute;right:.2rem;width:auto}.mvi-step .mvi-step-label[data-v-b2c607ef]{display:block;font-size:.24rem;color:var(--mvi-font-color-mute);transform:translate(-50%);margin-left:.15rem}.mvi-step .mvi-step-label.finish[data-v-b2c607ef]{color:var(--mvi-success-normal)}.mvi-step .mvi-step-label.first[data-v-b2c607ef],.mvi-step .mvi-step-label.last[data-v-b2c607ef]{transform:none;margin-left:0}.mvi-step .mvi-step-container[data-v-b2c607ef]{position:absolute;left:0;bottom:0;display:flex;justify-content:flex-start;align-items:center;height:.6rem;width:100%}.mvi-step .mvi-step-container .mvi-step-icon[data-v-b2c607ef]{display:block;background-color:var(--mvi-bg-color-common)}.mvi-step .mvi-step-container .mvi-step-icon.last[data-v-b2c607ef]{position:absolute;right:0}.mvi-step .mvi-step-container .mvi-step-line[data-v-b2c607ef]{display:block;flex:1;height:0;border-top:2px solid var(--mvi-font-color-mute)}.mvi-step .mvi-step-container .mvi-step-line.finish[data-v-b2c607ef]{border-top-color:var(--mvi-success-normal)}.mvi-step .mvi-step-container .mvi-step-line.last[data-v-b2c607ef]{display:none}.mvi-step-icon-active-el[data-v-b2c607ef]{color:var(--mvi-success-normal)}.mvi-step-icon-inactive-el[data-v-b2c607ef]{color:var(--mvi-font-color-mute)}.mvi-step-icon-inactive-el.finish[data-v-b2c607ef]{color:var(--mvi-success-normal)}.mvi-step-circle[data-v-b2c607ef]{display:block;width:.18rem;height:.18rem;background-color:var(--mvi-font-color-mute);border:none;border-radius:50%}.mvi-step-circle.finish[data-v-b2c607ef]{background-color:var(--mvi-success-normal)}.mvi-step-circle-active[data-v-b2c607ef]{display:block;width:.3rem;height:.3rem;background-color:var(--mvi-success-normal);border:none;border-radius:50%}.mvi-stepper[data-v-0fc74a32]{display:inline-flex;justify-content:flex-start;align-items:center;position:relative}.mvi-stepper .mvi-stepper-minus[data-v-0fc74a32],.mvi-stepper .mvi-stepper-plus[data-v-0fc74a32]{display:inline-flex;justify-content:center;align-items:center;background-color:var(--mvi-bg-color-dark);border-radius:.08rem;color:var(--mvi-font-color-sub);position:relative;cursor:pointer;-webkit-user-select:none;user-select:none}.mvi-stepper .mvi-stepper-minus.active[data-v-0fc74a32]:active:before,.mvi-stepper .mvi-stepper-plus.active[data-v-0fc74a32]:active:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:var(--mvi-bg-color-active);border:inherit;border-color:var(--mvi-bg-color-active);border-radius:inherit;transform:translate(-50%,-50%);opacity:.1;content:" ";box-sizing:content-box}.mvi-stepper .mvi-stepper-minus.border[data-v-0fc74a32],.mvi-stepper .mvi-stepper-plus.border[data-v-0fc74a32]{border:1px solid var(--mvi-border-color)}.mvi-stepper .mvi-stepper-minus[disabled][data-v-0fc74a32],.mvi-stepper .mvi-stepper-plus[disabled][data-v-0fc74a32]{opacity:.6}.mvi-stepper .mvi-stepper-minus[data-v-0fc74a32]{margin-right:.1rem}.mvi-stepper .mvi-stepper-input[data-v-0fc74a32]{min-width:0;background-color:var(--mvi-bg-color-dark);margin-right:.1rem;border-radius:.08rem;width:1.5rem;color:var(--mvi-font-color-sub);padding:0 .2rem}.mvi-stepper .mvi-stepper-input.border[data-v-0fc74a32]{border:1px solid var(--mvi-border-color)}.mvi-stepper .mvi-stepper-input input[data-v-0fc74a32]{position:relative;display:block;background-color:transparent;height:100%;width:100%;min-width:0;color:inherit;border:none;border-radius:.08rem;font-family:PingFang SC,Helvetica Neue,Helvetica,Roboto,Segoe UI,Microsoft YaHei,Arial,sans-serif;background-image:none;margin:0;padding:0;font-size:inherit}.mvi-stepper .mvi-stepper-input input[disabled][data-v-0fc74a32]{background-color:inherit;color:inherit}.mvi-stepper .mvi-stepper-input[disabled][data-v-0fc74a32]{opacity:.6}.mvi-stepper.small .mvi-stepper-minus[data-v-0fc74a32],.mvi-stepper.small .mvi-stepper-plus[data-v-0fc74a32]{width:.72rem;height:.72rem;font-size:.24rem}.mvi-stepper.small .mvi-stepper-input[data-v-0fc74a32]{height:.72rem;font-size:.24rem}.mvi-stepper.medium .mvi-stepper-minus[data-v-0fc74a32],.mvi-stepper.medium .mvi-stepper-plus[data-v-0fc74a32]{width:.88rem;height:.88rem;font-size:.28rem}.mvi-stepper.medium .mvi-stepper-input[data-v-0fc74a32]{height:.88rem;font-size:.28rem}.mvi-stepper.large .mvi-stepper-minus[data-v-0fc74a32],.mvi-stepper.large .mvi-stepper-plus[data-v-0fc74a32]{width:1rem;height:1rem;font-size:.32rem}.mvi-stepper.large .mvi-stepper-input[data-v-0fc74a32]{height:1rem;font-size:.32rem}.mvi-number-keyboard[data-v-2886d8dc]{display:block;position:absolute;bottom:0;left:0;width:100%;overflow:hidden;background-color:var(--mvi-bg-color-common);-webkit-user-select:none;user-select:none;font-size:.32rem;box-shadow:var(--mvi-boxshadow)}.mvi-number-keyboard .mvi-number-keyboard-title[data-v-2886d8dc]{display:flex;justify-content:center;align-items:center;padding:.2rem .2rem 0;font-size:.28rem;color:var(--mvi-font-color-sub)}.mvi-number-keyboard .mvi-number-keyboard-wrapper[data-v-2886d8dc]{display:flex;justify-content:space-between;width:100%;height:4.8rem}.mvi-number-keyboard .mvi-number-keyboard-wrapper.border[data-v-2886d8dc]{padding:.2rem}.mvi-number-keyboard .mvi-number-keyboard-wrapper .mvi-number-keyboard-left[data-v-2886d8dc]{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;flex:1;height:100%}.mvi-number-keyboard .mvi-number-keyboard-wrapper .mvi-number-keyboard-left .mvi-number-keyboard-left-number[data-v-2886d8dc]{display:block;width:calc(1/3 * 100%);height:25%;margin:0;padding:.1rem}.mvi-number-keyboard .mvi-number-keyboard-wrapper .mvi-number-keyboard-left .mvi-number-keyboard-left-number>.mvi-number-keyboard-left-number-el[data-v-2886d8dc]{position:relative;display:flex;justify-content:center;align-items:center;width:100%;height:100%;background-color:var(--mvi-bg-color-default);border-radius:.08rem;cursor:pointer;font-weight:700}.mvi-number-keyboard .mvi-number-keyboard-wrapper .mvi-number-keyboard-left .mvi-number-keyboard-left-number>.mvi-number-keyboard-left-number-el.active[data-v-2886d8dc]:active:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:var(--mvi-bg-color-active);border:inherit;border-color:var(--mvi-bg-color-active);border-radius:inherit;transform:translate(-50%,-50%);opacity:.1;content:" ";box-sizing:content-box}.mvi-number-keyboard .mvi-number-keyboard-wrapper .mvi-number-keyboard-left .mvi-number-keyboard-left-number.border[data-v-2886d8dc]{border-top:1px solid var(--mvi-border-color);border-right:1px solid var(--mvi-border-color);padding:0}.mvi-number-keyboard .mvi-number-keyboard-wrapper .mvi-number-keyboard-left .mvi-number-keyboard-left-number.border>.mvi-number-keyboard-left-number-el[data-v-2886d8dc]{background-color:transparent;border-radius:0}.mvi-number-keyboard .mvi-number-keyboard-wrapper .mvi-number-keyboard-left .mvi-number-keyboard-left-number.half[data-v-2886d8dc]{width:calc(2/3 * 100%)}.mvi-number-keyboard .mvi-number-keyboard-wrapper .mvi-number-keyboard-left .mvi-number-keyboard-left-number.full[data-v-2886d8dc]{width:100%}.mvi-number-keyboard .mvi-number-keyboard-wrapper .mvi-number-keyboard-right[data-v-2886d8dc]{display:flex;justify-content:flex-start;flex-direction:column;height:100%;width:2.1rem}.mvi-number-keyboard .mvi-number-keyboard-wrapper .mvi-number-keyboard-right .mvi-number-keyboard-delete[data-v-2886d8dc]{display:block;width:100%;flex:1;padding:.1rem}.mvi-number-keyboard .mvi-number-keyboard-wrapper .mvi-number-keyboard-right .mvi-number-keyboard-delete .mvi-number-keyboard-delete-el[data-v-2886d8dc]{position:relative;display:flex;justify-content:center;align-items:center;background-color:var(--mvi-bg-color-dark);font-weight:700;cursor:pointer;height:100%;width:100%;border-radius:.08rem}.mvi-number-keyboard .mvi-number-keyboard-wrapper .mvi-number-keyboard-right .mvi-number-keyboard-delete .mvi-number-keyboard-delete-el.active[data-v-2886d8dc]:active:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:var(--mvi-bg-color-active);border:inherit;border-color:var(--mvi-bg-color-active);border-radius:inherit;transform:translate(-50%,-50%);opacity:.1;content:" ";box-sizing:content-box}.mvi-number-keyboard .mvi-number-keyboard-wrapper .mvi-number-keyboard-right .mvi-number-keyboard-delete .mvi-number-keyboard-delete-el[disabled][data-v-2886d8dc]{opacity:.6}.mvi-number-keyboard .mvi-number-keyboard-wrapper .mvi-number-keyboard-right .mvi-number-keyboard-delete.border[data-v-2886d8dc]{border-top:1px solid var(--mvi-border-color);padding:0}.mvi-number-keyboard .mvi-number-keyboard-wrapper .mvi-number-keyboard-right .mvi-number-keyboard-delete.border>.mvi-number-keyboard-delete-el[data-v-2886d8dc]{border-radius:0}.mvi-number-keyboard .mvi-number-keyboard-wrapper .mvi-number-keyboard-right .mvi-number-keyboard-complete[data-v-2886d8dc]{display:block;width:100%;flex:1;padding:.1rem}.mvi-number-keyboard .mvi-number-keyboard-wrapper .mvi-number-keyboard-right .mvi-number-keyboard-complete .mvi-number-keyboard-complete-el[data-v-2886d8dc]{position:relative;display:flex;justify-content:center;align-items:center;height:100%;width:100%;background-color:var(--mvi-primary-normal);color:#fff;font-weight:700;cursor:pointer;border-radius:.08rem}.mvi-number-keyboard .mvi-number-keyboard-wrapper .mvi-number-keyboard-right .mvi-number-keyboard-complete .mvi-number-keyboard-complete-el.active[data-v-2886d8dc]:active:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:var(--mvi-bg-color-active);border:inherit;border-color:var(--mvi-bg-color-active);border-radius:inherit;transform:translate(-50%,-50%);opacity:.1;content:" ";box-sizing:content-box}.mvi-number-keyboard .mvi-number-keyboard-wrapper .mvi-number-keyboard-right .mvi-number-keyboard-complete .mvi-number-keyboard-complete-el[disabled][data-v-2886d8dc]{opacity:.6}.mvi-number-keyboard .mvi-number-keyboard-wrapper .mvi-number-keyboard-right .mvi-number-keyboard-complete.border[data-v-2886d8dc]{border-top:1px solid var(--mvi-border-color);padding:0}.mvi-number-keyboard .mvi-number-keyboard-wrapper .mvi-number-keyboard-right .mvi-number-keyboard-complete.border>.mvi-number-keyboard-complete-el[data-v-2886d8dc]{border-radius:0}.mvi-keyboard-enter-from[data-v-2886d8dc],.mvi-keyboard-leave-to[data-v-2886d8dc]{transform:translateY(100%)}.mvi-toast[data-v-6656d407]{display:flex;justify-content:flex-start;flex-direction:column;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);min-width:3rem;max-width:5rem;margin:0;padding:.3rem;border-radius:.08rem;background-color:#1a1a1ab3;color:#fff}.mvi-toast.iconless[data-v-6656d407]{justify-content:center;align-items:center;padding:0;width:2.4rem;height:1.8rem}.mvi-toast.shadow[data-v-6656d407]{box-shadow:var(--mvi-boxshadow)}.mvi-toast .mvi-toast-icon[data-v-6656d407]{display:flex;justify-content:center;align-items:center;width:100%}.mvi-toast .mvi-toast-message[data-v-6656d407]{display:block;width:100%;text-align:center;font-size:.28rem;margin-top:.2rem;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.mvi-pull-refresh[data-v-827c0a7d]{display:block;width:100%;height:100vh;position:relative;overflow:hidden}.mvi-pull-refresh .mvi-pull-refresh-container[data-v-827c0a7d]{display:block;width:100%;position:relative;overflow:hidden}.mvi-pull-refresh .mvi-pull-refresh-container .mvi-pull-refresh-wrapper[data-v-827c0a7d]{display:block;position:relative;width:100%;overflow-x:hidden;overflow-y:auto}.mvi-pull-refresh .mvi-pull-refresh-container .mvi-pull-refresh-el[data-v-827c0a7d]{display:flex;justify-content:center;align-items:center;color:var(--mvi-font-color-sub);width:100%;padding:.4rem 0}.mvi-pull-refresh .mvi-pull-refresh-container .mvi-pull-refresh-el .mvi-pull-refresh-text[data-v-827c0a7d]{margin-left:.1rem}.mvi-dialog-title[data-v-c5f20653]{display:block;width:100%;text-align:center;font-size:.32rem;color:var(--mvi-font-color-default);font-weight:700;line-height:1.5}.mvi-dialog-content[data-v-c5f20653]{text-align:center;color:var(--mvi-font-color-default);line-height:1.5;font-size:.28rem}.mvi-dialog-footer[data-v-c5f20653]{display:flex;justify-content:space-between;width:100%;height:.88rem}.mvi-dialog-ios-content[data-v-c5f20653]{display:block;width:100%;font-size:.24rem;font-weight:400;text-align:center;color:var(--mvi-font-color-default);line-height:1.5;margin-top:.2rem}.mvi-dialog-input[data-v-c5f20653]{display:block;width:100%;position:relative}.mvi-dialog-input.mvi-dialog-input-mt[data-v-c5f20653]{margin-top:.3rem}.mvi-dialog-input>input[data-v-c5f20653]{display:block;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:90%;height:.72rem;line-height:1.5;border-radius:.08rem;border:1px solid var(--mvi-border-color);color:var(--mvi-font-color-default);font-size:.28rem;padding:0 .2rem;background-color:var(--mvi-bg-color-common);margin-left:5%}.mvi-dialog-input>input[data-v-c5f20653]::placeholder,.mvi-dialog-input>input[data-v-c5f20653]::-webkit-input-placeholder{opacity:.5;font-family:inherit;font-size:inherit;color:inherit;vertical-align:middle}.mvi-dialog-input>input.mvi-dialog-input-padding[data-v-c5f20653]{padding-right:.6rem}.mvi-dialog-times[data-v-c5f20653]{position:absolute;top:50%;right:calc(5% + .2rem);transform:translateY(-50%);color:var(--mvi-font-color-mute);cursor:pointer}.mvi-dialog-ok[data-v-c5f20653]{position:relative;display:flex;align-items:center;justify-content:center;height:100%;font-size:.32rem;color:var(--mvi-primary-normal);flex:1;cursor:pointer;font-weight:700;-webkit-user-select:none;user-select:none}.mvi-dialog-cancel[data-v-c5f20653]{position:relative;display:flex;align-items:center;justify-content:center;height:100%;font-size:.32rem;width:50%;border-right:1px solid var(--mvi-border-color);color:var(--mvi-primary-normal);cursor:pointer;-webkit-user-select:none;user-select:none}.mvi-dialog-ok[data-v-c5f20653]:active:before,.mvi-dialog-cancel[data-v-c5f20653]:active:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:var(--mvi-bg-color-active);border:inherit;border-color:var(--mvi-bg-color-active);border-radius:inherit;transform:translate(-50%,-50%);opacity:.1;content:" ";box-sizing:content-box}.mvi-dialog-title[data-v-c0195374]{display:block;width:100%;font-size:.32rem;color:var(--mvi-font-color-default);font-weight:700;line-height:1.5}.mvi-dialog-content[data-v-c0195374]{color:var(--mvi-font-color-default);line-height:1.5;font-size:.28rem;padding:.3rem 0}.mvi-dialog-content.center[data-v-c0195374]{text-align:center}.mvi-dialog-input[data-v-c0195374]{display:block;width:100%;position:relative}.mvi-dialog-input input[data-v-c0195374]{display:block;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:.88rem;line-height:1.5;border-radius:.08rem;border:1px solid var(--mvi-border-color);color:var(--mvi-font-color-default);font-size:.28rem;background-color:var(--mvi-bg-color-common);padding:0 .2rem}.mvi-dialog-input input[data-v-c0195374]::placeholder,.mvi-dialog-input input[data-v-c0195374]::-webkit-input-placeholder{opacity:.5;font-family:inherit;font-size:inherit;color:inherit;vertical-align:middle}.mvi-dialog-input input.mvi-dialog-input-padding[data-v-c0195374]{padding-right:.6rem}.mvi-dialog-times[data-v-c0195374]{position:absolute;top:50%;right:.2rem;transform:translateY(-50%);color:var(--mvi-font-color-mute);cursor:pointer}.mvi-dialog-footer[data-v-c0195374]{width:100%;display:flex;justify-content:flex-end;align-items:center;padding:0 .2rem;margin-top:.4rem}.mvi-dialog-footer .mvi-dialog-cancel[data-v-c0195374]{margin-right:.3rem}.mvi-dialog-footer.center[data-v-c0195374]{justify-content:center}.mvi-swipe-cell[data-v-b9ffb2f1]{display:block;width:100%;position:relative;overflow:hidden}.mvi-swipe-cell .mvi-swipe-cell-wrapper[data-v-b9ffb2f1]{display:block;width:100%;position:relative}.mvi-swipe-cell .mvi-swipe-cell-wrapper .mvi-swipe-cell-left[data-v-b9ffb2f1]{display:block;position:absolute;right:100%;top:0;height:100%;z-index:1;overflow:hidden}.mvi-swipe-cell .mvi-swipe-cell-wrapper .mvi-swipe-cell-right[data-v-b9ffb2f1]{display:block;position:absolute;left:100%;top:0;height:100%;z-index:1;overflow:hidden}.mvi-swipe-cell .mvi-swipe-cell-wrapper .mvi-swipe-cell-center[data-v-b9ffb2f1]{display:block;width:100%;position:relative;overflow:hidden}.mvi-tabbar-item[data-v-2f38d1d4]{position:relative;display:flex;justify-content:center;align-items:center;vertical-align:middle;height:100%;padding:0 .4rem;cursor:pointer;-webkit-user-select:none;user-select:none}.mvi-tabbar-item .mvi-tabbar-badge[data-v-2f38d1d4]{width:100%}.mvi-tabbar-item .mvi-tabbar-item-child[data-v-2f38d1d4]{display:flex;justify-content:flex-start;align-items:center;flex-direction:column;vertical-align:middle}.mvi-tabbar-item .mvi-tabbar-item-child .mvi-tabbar-icon[data-v-2f38d1d4]{display:block;width:100%;text-align:center;margin:0;padding:0;font-size:.4rem}.mvi-tabbar-item .mvi-tabbar-item-child .mvi-tabbar-name[data-v-2f38d1d4]{display:block;width:100%;text-align:center;font-size:.32rem;white-space:nowrap}.mvi-tabbar-item .mvi-tabbar-item-child .mvi-tabbar-name.small[data-v-2f38d1d4]{font-size:.24rem}.mvi-tabbar-item.item-active[data-v-2f38d1d4]{color:var(--mvi-info-normal)}.mvi-tabbar-item.active[data-v-2f38d1d4]:active:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:var(--mvi-bg-color-active);border:inherit;border-color:var(--mvi-bg-color-active);border-radius:inherit;transform:translate(-50%,-50%);opacity:.1;content:" ";box-sizing:content-box}.mvi-tabbar-item[disabled][data-v-2f38d1d4]{opacity:.6}.mvi-tabbar[data-v-7c7ce5e9]{display:flex;justify-content:space-between;align-items:center;width:100%;height:1.2rem;background-color:var(--mvi-bg-color-common);padding:0 .1rem;color:var(--mvi-font-color-default)}.mvi-tabbar.border[data-v-7c7ce5e9]{border-top:1px solid var(--mvi-border-color)}.mvi-tabbar.fixed[data-v-7c7ce5e9]{position:fixed;bottom:0;left:0}.mvi-table[data-v-8603a047]{display:block;width:100%;overflow-x:auto;overflow-y:hidden;background-color:var(--mvi-bg-color-common);font-size:.28rem;color:var(--mvi-font-color-default)}.mvi-table.border[data-v-8603a047]{border:1px solid var(--mvi-border-color)}.mvi-table .mvi-table-wrap[data-v-8603a047]{display:block;min-width:100%}.mvi-table .mvi-table-wrap .mvi-table-header[data-v-8603a047]{display:block;width:100%}.mvi-table .mvi-table-wrap .mvi-table-header table[data-v-8603a047]{width:100%;padding:0;margin:0;border-collapse:collapse;table-layout:fixed}.mvi-table .mvi-table-wrap .mvi-table-header table tr[data-v-8603a047]{width:100%;background:var(--mvi-bg-color-dark)}.mvi-table .mvi-table-wrap .mvi-table-header table tr th[data-v-8603a047]{font-weight:700;padding:.2rem 0;text-align:left;border-bottom:1px solid var(--mvi-border-color);position:relative}.mvi-table .mvi-table-wrap .mvi-table-header table tr th.border[data-v-8603a047]{border-right:1px solid var(--mvi-border-color)}.mvi-table .mvi-table-wrap .mvi-table-header table tr th.border[data-v-8603a047]:last-child{border-right:none}.mvi-table .mvi-table-wrap .mvi-table-header table tr th .mvi-table-column[data-v-8603a047]{display:flex;justify-content:flex-start;align-items:center;padding:0 .2rem;width:100%;white-space:normal;word-break:break-all}.mvi-table .mvi-table-wrap .mvi-table-header table tr th .mvi-table-column.center[data-v-8603a047]{justify-content:center}.mvi-table .mvi-table-wrap .mvi-table-header table tr th .mvi-table-column .mvi-table-sortable[data-v-8603a047]{display:inline-flex;justify-content:space-between;align-items:center;flex-direction:column;margin-left:.1rem;font-size:.24rem;color:var(--mvi-font-color-mute);transform:scale(.8)}.mvi-table .mvi-table-wrap .mvi-table-header table tr th .mvi-table-column .mvi-table-sortable .mvi-icon[data-v-8603a047]{cursor:pointer}.mvi-table .mvi-table-wrap .mvi-table-header table tr th .mvi-table-column .mvi-table-sortable .mvi-icon.active[data-v-8603a047]{color:var(--mvi-info-normal)}.mvi-table .mvi-table-wrap .mvi-table-header table tr th.placeholder[data-v-8603a047]{padding:0}.mvi-table .mvi-table-wrap .mvi-table-body[data-v-8603a047]{display:block;width:100%}.mvi-table .mvi-table-wrap .mvi-table-body.overflow[data-v-8603a047]{overflow-x:hidden;overflow-y:auto}.mvi-table .mvi-table-wrap .mvi-table-body table[data-v-8603a047]{width:100%;padding:0;margin:0;border-collapse:collapse;table-layout:fixed}.mvi-table .mvi-table-wrap .mvi-table-body table tr[data-v-8603a047]{width:100%}.mvi-table .mvi-table-wrap .mvi-table-body table tr.stripe[data-v-8603a047]:nth-child(2n){background:var(--mvi-bg-color-default)}.mvi-table .mvi-table-wrap .mvi-table-body table tr td[data-v-8603a047]{padding:.2rem 0;text-align:left;border-bottom:1px solid var(--mvi-border-color);position:relative}.mvi-table .mvi-table-wrap .mvi-table-body table tr td.border[data-v-8603a047]{border-right:1px solid var(--mvi-border-color)}.mvi-table .mvi-table-wrap .mvi-table-body table tr td.border[data-v-8603a047]:last-child{border-right:none}.mvi-table .mvi-table-wrap .mvi-table-body table tr td .mvi-table-column[data-v-8603a047]{display:block;padding:0 .2rem;width:100%;white-space:normal;word-break:break-all}.mvi-table .mvi-table-wrap .mvi-table-body table tr td .mvi-table-column .mvi-table-column-item[data-v-8603a047]{display:flex;justify-content:flex-start;align-items:center;width:100%}.mvi-table .mvi-table-wrap .mvi-table-body table tr td .mvi-table-column .mvi-table-column-item.center[data-v-8603a047]{justify-content:center}.mvi-table .mvi-table-wrap .mvi-table-body table tr td .mvi-table-column .mvi-table-column-item[data-v-8603a047] .mvi-tooltip{max-width:100%}.mvi-table .mvi-table-wrap .mvi-table-body table tr td .mvi-table-column .mvi-table-column-item[data-v-8603a047] .mvi-tooltip .ellipsis{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mvi-table .mvi-table-wrap .mvi-table-body table tr:last-child>td[data-v-8603a047]{border-bottom:none}.mvi-table .mvi-table-wrap .mvi-table-body .mvi-table-loading[data-v-8603a047]{display:flex;justify-content:center;align-items:center;width:100%;padding:.4rem 0;color:var(--mvi-font-color-mute);font-size:.24rem}.mvi-table .mvi-table-wrap .mvi-table-body .mvi-table-loading>span[data-v-8603a047]{margin-left:.1rem}.mvi-table .mvi-table-wrap .mvi-table-body .mvi-table-nodata[data-v-8603a047]{display:block;width:100%;text-align:center;padding:.4rem 0;color:var(--mvi-font-color-mute);font-size:.24rem}.mvi-tabs[data-v-1c93a6e8]{display:block;width:100%;background-color:var(--mvi-bg-color-common)}.mvi-tabs .mvi-tabs-header[data-v-1c93a6e8]{display:flex;position:relative;justify-content:space-between;align-items:stretch;padding:0 .2rem}.mvi-tabs .mvi-tabs-header .mvi-tabs-slider[data-v-1c93a6e8]{position:absolute;left:0;bottom:0;width:1rem;height:.04rem;transition:left .4s,width .4s;border-radius:.08rem;background-color:var(--mvi-error-normal);z-index:20}.mvi-tabs .mvi-tabs-header .mvi-tab-header[data-v-1c93a6e8]{display:flex;justify-content:flex-start;position:relative;align-items:center;line-height:1.5;padding:.1rem .2rem;color:var(--mvi-font-color-default);font-size:.28rem;cursor:pointer;-webkit-user-select:none;user-select:none}.mvi-tabs .mvi-tabs-header .mvi-tab-header.ellipsis .mvi-tab-header-text[data-v-1c93a6e8]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mvi-tabs .mvi-tabs-header .mvi-tab-header[disabled][data-v-1c93a6e8]{opacity:.6}.mvi-tabs .mvi-tabs-header .mvi-tab-header.active[data-v-1c93a6e8]{color:var(--mvi-error-normal)}.mvi-tabs .mvi-tabs-header .mvi-tab-header .mvi-tab-icon[data-v-1c93a6e8]{font-size:.8em}.mvi-tabs .mvi-tabs-header .mvi-tab-header .mvi-tab-icon.left[data-v-1c93a6e8]{margin-right:.1rem}.mvi-tabs .mvi-tabs-header .mvi-tab-header .mvi-tab-icon.right[data-v-1c93a6e8]{margin-left:.1rem}.mvi-tabs .mvi-tabs-header.border[data-v-1c93a6e8]{border-bottom:1px solid var(--mvi-border-color)}.mvi-tabs .mvi-tabs-header.card[data-v-1c93a6e8]{border:.02rem solid var(--mvi-error-normal);border-radius:.08rem;padding:0}.mvi-tabs .mvi-tabs-header.card .mvi-tab-header[data-v-1c93a6e8]{flex:1;justify-content:center;border-right:.02rem solid var(--mvi-error-normal)}.mvi-tabs .mvi-tabs-header.card .mvi-tab-header[data-v-1c93a6e8]:last-child{border-right:none}.mvi-tabs .mvi-tabs-header.card .mvi-tab-header.active[data-v-1c93a6e8]{background-color:var(--mvi-error-normal);color:#fff}.mvi-tabs .mvi-tabs-content[data-v-1c93a6e8]{position:relative;overflow:hidden}.mvi-tab[data-v-a578100d]{display:block;position:absolute;left:0;top:0;width:100%;background-color:var(--mvi-bg-color-common)}.mvi-tab-fade-enter-from[data-v-a578100d],.mvi-tab-fade-leave-to[data-v-a578100d],.mvi-tab-fade-back-enter-from[data-v-a578100d],.mvi-tab-fade-back-leave-to[data-v-a578100d]{opacity:0}.mvi-tab-slide-enter-from[data-v-a578100d]{left:100%;opacity:0}.mvi-tab-slide-leave-to[data-v-a578100d],.mvi-tab-slide-back-enter-from[data-v-a578100d]{left:-100%;opacity:0}.mvi-tab-slide-back-leave-to[data-v-a578100d]{left:100%;opacity:0}.mvi-carousel[data-v-7505054f]{display:block;position:relative;width:100%;overflow:hidden}.mvi-carousel-slides[data-v-7505054f]{display:flex;justify-content:flex-start;align-items:center;position:relative;height:100%}.mvi-carousel-slides.vertical[data-v-7505054f]{flex-direction:column}.mvi-carousel-fades[data-v-7505054f]{display:block;position:relative;width:100%;height:100%}.mvi-carousel-indicators[data-v-7505054f]{display:flex;justify-content:flex-start;align-items:center;flex-wrap:nowrap;position:absolute;left:50%;bottom:.2rem;transform:translate(-50%);z-index:10}.mvi-carousel-indicators .mvi-carousel-indicator[data-v-7505054f]{position:relative;display:block;width:.24rem;height:.24rem;background:var(--mvi-border-color);border-radius:50%;margin-right:.2rem}.mvi-carousel-indicators .mvi-carousel-indicator[data-v-7505054f]:last-child{margin-right:0}.mvi-carousel-indicators .mvi-carousel-indicator.current[data-v-7505054f]{background:var(--mvi-info-normal)}.mvi-carousel-indicators .mvi-carousel-indicator[data-v-7505054f]:hover{cursor:pointer}.mvi-carousel-controls[data-v-7505054f]{position:absolute;top:50%;transform:translateY(-50%);z-index:10;display:flex;justify-content:center;align-items:center;width:.72rem;height:.72rem;background:#000;color:#fff;border-radius:50%;font-size:.32rem;opacity:.5;transition:opacity .5s}.mvi-carousel-controls.controls-forward[data-v-7505054f]{right:.2rem}.mvi-carousel-controls.controls-back[data-v-7505054f]{left:.2rem}.mvi-carousel-controls[data-v-7505054f]:hover{opacity:.8;cursor:pointer}.mvi-carousel-item[data-v-721d6f08]{display:block;position:relative;overflow:hidden;width:100%;height:100%}.mvi-carousel-item.fade[data-v-721d6f08]{position:absolute;left:0;top:0}.carousel-fade-enter-from[data-v-721d6f08],.carousel-fade-leave-to[data-v-721d6f08]{opacity:0}.mvi-rich-image[data-v-d8127c40]{display:block;width:100%;height:100%;position:relative;overflow:hidden}.mvi-image-preview-carousel[data-v-44e22330]{background-color:#000;height:100%;width:100%}.mvi-image-preview-page[data-v-44e22330]{position:absolute;display:block;color:#fff;top:0;left:0;width:100%;padding:.2rem;text-align:center;background-color:#0009;z-index:20}.mvi-image-preview-page span+span[data-v-44e22330]{margin-left:.1rem}.mvi-image-preview-footer[data-v-44e22330]{display:block;width:100%;position:absolute;left:0;bottom:0;z-index:20}.mvi-image-preview-footer .mvi-image-preview-descriptions[data-v-44e22330]{display:block;width:100%;background-color:#0009;color:#fff}.mvi-image-preview-footer .mvi-image-preview-descriptions .mvi-image-preview-description[data-v-44e22330]{padding:.3rem .2rem}.mvi-image-preview-footer .mvi-image-preview-descriptions.has-tools[data-v-44e22330]{margin-top:.2rem}.mvi-image-preview-footer .mvi-image-preview-tools[data-v-44e22330]{display:flex;justify-content:flex-start;align-items:center;background-color:#0009;color:#fff;width:fit-content;margin:0 auto;padding:.2rem .4rem;border-radius:999rem;margin-bottom:.1rem}.mvi-image-preview-footer .mvi-image-preview-tools .mvi-image-preview-tools-icon[data-v-44e22330]{margin-right:.4rem;font-size:.32rem;cursor:pointer}.mvi-image-preview-footer .mvi-image-preview-tools .mvi-image-preview-tools-icon[data-v-44e22330]:last-child{margin-right:0}')),document.head.appendChild(A)}}catch(a){console.error("vite-plugin-css-injected-by-js",a)}}();
